2012-08-10 69 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