2013-08-02 51 views
2

我正在JSP頁面上工作。我使用Spring框架,JSTL和Jquery。我混合了一些js代碼和JSTL代碼。下面是代碼:如何在JavaScript代碼中製作JSTL foreach循環?

這是我的春天控制器:

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

請添加最終的javascript。如果沒有客戶,則不會有值[0]。查看源代碼並將其粘貼到此處。 – Gunslinger

+0

檢查你是否真的有'$ {customer.name}' – Alex

回答

0

我不認爲你需要準備好文檔(在這個特定的情況下)。另外嘗試設置腳本的類型而不是語言。我假設你在Contract類中有一個返回Collection的getCustomers()方法。

例如

<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> 
0

你不能在腳本函數中使用JSTL。嘗試將值放在腳本函數外

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

只是使用它來顯示爲它分配一些文本框或表的值。

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>