2

我正在处理一个 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".

我不明白。发生了什么 ?

4

3 回答 3

2

您提供的此代码应该可以完美运行。唯一可能的 values[0]= undefined 是由于 ${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>
于 2016-05-04T12:57:48.117 回答
0

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

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

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

于 2014-12-28T03:17:51.487 回答
0

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

例如

<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>
于 2013-08-02T10:45:37.950 回答