【问题标题】:Construct array using JSON from Bean object使用 Bean 对象中的 JSON 构造数组
【发布时间】:2012-08-10 18:47:29
【问题描述】:

大家好,我有一个有 3 个 getter 的 bean。在 JSP 中,我使用 JSTL 遍历 bean 以填充表。我有 saome javascript 我需要做同样的事情来构造一个数组。这里它是硬编码的,但是我如何通过遍历一个 bean 来构造它?

Bean:这就是我在 JSP 中使用 JSTL 的方式

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

我怎样才能在这里做同样的事情:

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>

【问题讨论】:

  • 这不是有效的 JavaScript 或 JSON,所以你只会得到一个语法错误。
  • 您是在尝试构建一个数组,还是对现有数组进行迭代?
  • 你的问题真的不清楚,你是想在 JSP 中生成 JSON 还是在 Javascript 中使用对象?
  • 我标记为 javascript 的部分是我试图迭代和创建的部分。它目前是硬编码的。但是我有一个 bean 对象,它有一个 getter,我想用它来填充所有月份
  • 在这种情况下,由于您似乎想在 JSP 中生成 JSON,我建议您查看json-taglib。它是一组用于生成 JSON 数据的自定义 JSP 标签。不是唯一一组这样做的自定义标签,但它是我熟悉的。

标签: java javascript json jstl


【解决方案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>

【讨论】:

    【解决方案2】:
    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);
    }
    

    【讨论】:

    • hmmmmmmmmmmmm...也试试这个
    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 2017-08-02
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多