2011-04-06 98 views
0

在下面的代碼中,我試圖在java方法option.value = <% ppList.get(i).getId(); %>中使用var i,但它對我來說工作不是很好。如何在javascript中獲取int變量以輸入java方法

這裏是完整的js函數:

function receiveAnswer(response) { 
    var aSeats = document.getElementById("aSeats"); 
    while (aSeats.childNodes.length > 0) { // clear it out 
    aSeats.removeChild(aSeats.childNodes[0]); 
    } 
    <% List<Physical_Package> ppList = (List<Physical_Package>) session.getAttribute("currentPack"); %> 
    for (var i = 0; i < response.aSeats.length; i++) { // add the items back in 
    var option = aSeats.appendChild(document.createElement("option")); 
    option.setAttribute("type", "hidden"); 
    option.setAttribute("name", "id"); 
    option.setAttribute("value", "") 
    option.appendChild(document.createTextNode(response.aSeats[i])); 
    option.value = <% ppList.get(i).getId(); %> 
    } 
} 

回答

2

你在這裏混合兩種完全不同的事情。 Java代碼在服務器上運行,並將包含JavaScript的結果頁發送到瀏覽器。 i是一個JavaScript變量,在Java代碼執行時不存在。

一種解決方案是在ppList打印出所有的ID到JavaScript數組,然後可以從客戶端的訪問:

var array = [ 
<% 
    List<Physical_Package> ppList = (List<Physical_Package>) session.getAttribute("currentPack"); 
    for (Physical_Package pp : ppList) 
    out.println(pp.getId() + ","); 
%> 
]; 
... 
option.value = array[i]; 

這僅僅是一個例子;在JSP文件中混入Java代碼是一種不好的做法。考慮使用JSTL或這裏描述的備用解決方案之一:How to avoid Java Code in JSP-Files?

相關問題