【问题标题】:How to make a JSTL foreach loop in javascript code?如何在 javascript 代码中创建 JSTL foreach 循环?
【发布时间】:2013-08-02 08:48:23
【问题描述】:

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

Alert 显示"VALUES =&gt; undefined".

我不明白。发生了什么?

【问题讨论】:

  • 请添加最终的javascript。如果没有客户,则没有值[0]。查看源代码并将其粘贴到此处。
  • 检查你是否真的有${customer.name}

标签: jquery spring jsp spring-mvc jstl


【解决方案1】:

您提供的这段代码应该可以完美运行。唯一可能的 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>

【讨论】:

    【解决方案2】:

    我认为您不需要准备好文档(在这种特定情况下)。还可以尝试设置脚本类型而不是语言。我假设您在 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>
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 2014-03-03
        • 1970-01-01
        • 1970-01-01
        • 2012-05-28
        相关资源
        最近更新 更多