如何在javascript代码中创建JSTL foreach循环?

时间:2013-08-02 08:48:23

标签: jquery spring jsp spring-mvc jstl

我正在开发一个JSP页面。我使用Spring框架,JSTL和Jquery。我混合了一些js代码和JSTL代码。这是代码:

这是我的Spring控制器:

Contract contract = services.getContractInfo(contractNumber);
contract.addCustomer(customer);
model.addAttribute("contract", contract);

这是我的Java脚本:

<script language="javascript">
    $(document).ready(function(){
        var values = new Array();
        <c:forEach var="customer" items="${contract.customers}" varStatus="status">
            values.push("${customer.name}");   
        </c:forEach>

        alert(" VALUES => "+values[0]);
        ....
    });
</script>

警告向我显示"VALUES => undefined".

我不明白。发生了什么事?

3 个答案:

答案 0 :(得分:2)

您提供的此代码应该完美无缺。唯一可能性值[0] =未定义是由于$ {contract.customers}可能为空。以下代码应该有助于查找集合是否为空

<script language="javascript">
    $(function(){
        var values = new Array();
        <c:if test="${empty contract.customers}">
           values.push("No customers Found"); 
        </c:if>         
        <c:forEach var="customer" items="${contract.customers}" varStatus="status">
            values.push("${customer.name}");   
        </c:forEach>
        alert(" VALUES => "+values[0]);

    });
</script>

答案 1 :(得分:0)

我认为您不需要准备好文件(在这种特定情况下)。还尝试设置脚本类型而不是语言。我假设您在Contract类中有一个返回Collection的getCustomers()方法。

e.g。

<script type="text/javascript">
    var values = [];
    <c:forEach var="customer" items="${contract.customers}" varStatus="status">
        values.push("${customer.name}"); 
    </c:forEach>
    alert(" VALUES => " + values[0]);
</script>

答案 2 :(得分:0)

您无法在脚本函数中使用JSTL。尝试将值放在脚本函数之外

<c:forEach var="customer" items="${contract.customers}" varStatus="status">
values.push("${customer.name}");   
</c:forEach>

只需使用它来显示为其分配一些文本框或表格的值。