2012-08-10 64 views
0

你好,我有一個有3個getter的bean。在JSP中,我使用JSTL遍歷bean來填充表。我有saome javascript我需要做同樣的事情來構建一個數組。在這裏它是硬編碼的,但我怎樣才能通過迭代bean來構建它?使用來自Bean對象的JSON構造數組

豆:這是我如何使用JSTL

<c:forEach var="bean" items="${beans}"> 
    ${bean.month}  
    </c:forEach> 

我怎麼可以在這裏做同樣的事情做在JSP:

的Javascript:

"categories": [{ 
    "category": [{ 
     "label": "Oct" 
    }, { 
     "label": "Nov" 
    }, { 
     "label": "Dec" 
    }, { 
     "label": "Jan" 
    }, { 
     "label": "Feb" 
    }, { 
     "label": "Mar" 
    }, { 
     "label": "Apr" 
    }, { 
     "label": "May" 
    }, { 
     "label": "Jun" 
    }, { 
     "label": "Jul" 
    }, { 
     "label": "Aug" 
    }, { 
     "label": "Sep" 
    }]  
    }] 

試圖做一些事情像這樣在javascript中

<c:forEach var="bean" items="${beans}"> 
    [{ 
     "label": " ${bean.month}" 
    },   
    </c:forEach> 
+0

這不是有效的JavaScript或JSON,所以你只是得到一個語法錯誤。 – 2012-08-10 18:49:09

+0

你想要構造一個數組,還是遍歷現有的數組? – 2012-08-10 18:52:57

+1

你的問題真的不清楚,你想在JSP中生成JSON還是在Javascript中使用對象? – 2012-08-10 18:53:14

回答

1

我在JSTL方面經驗不足。這是基於我在PHP中的經驗的猜測。

var array = [ 
<c:forEach var="bean" items="${beans}" varStatus="beanStatus"> 
    { 
     "label": "${bean.month}" 
    } 
    <c:if test="${!beanStatus.last}"> // put comma after all item, but last one 
     , 
    </c:if>   
</c:forEach> 
]; 

var array = []; 
<c:forEach var="bean" items="${beans}"> 
    array.push({ 
     "label": "${bean.month}" 
    });   
</c:forEach> 
+0

看起來很有趣 – 2012-08-10 19:30:32

0
var category = [], // new Array 
    i, 
    newCategory; 

for (i = 0; i < beans.length; i += 1) { 
    newCategory = {}; // new object 
    newCategory.label = beans[i].month; 
    category.push(newCategory); 
} 
+0

hmmmmmmmmmmmm ...試試這也 – 2012-08-10 19:41:24