2013-04-04 70 views
0

我有一個ArrayList設置爲jsp頁面的請求屬性。數組列表由我的servlet填充。我使用數組列表來填充功能正確的頁面上的下拉列表。當用戶在下拉列表中選擇一個項目時,我想使用選擇的索引從數組列表中的相應元素中檢索一個值,並將該值顯示在另一個頁面元素(名爲「limit」)中。我想我無法得到正確的EL語法。什麼是正確的EL語法來檢索存儲爲請求屬性的數組元素屬性?

在JSP下拉(其正確顯示的選項):

<span>         

<select id="dropdown1" name="coveragelist" onchange="displaylimit(this)"> 
<option>Select coverage</option> 
<c:forEach items="${coveragelist}" var="coverage"> 
<option value="${coverage.coverageCode}" /> 
<c:out value="${coverage.coverageCodeDesc}" /> 
</c:forEach> 
</select> 

</span> 

的JS功能:

<script> 
function displaylimit(coveragedropdown) 
{ 
var index = coveragedropdown.selectedIndex; 
limit = "${requestScope.coveragelist[index].coverage.coverageLimit}"; 
document.getElementById("limit").innerHTML = limit; 

} 
</script> 

該數組包含具有coverageCode,coverageCodeDesc的定義的屬性覆蓋對象,並且coverageLimit。

索引字段確實包含下拉列表中所選項目的正確值(儘管我可能需要從中減去1 - 我必須檢查)。我無法從覆蓋範圍列表的特定元素中獲得限制值,也無法弄清楚我做錯了什麼。這可能很簡單。

在此先感謝。

+1

不能混搭EL(服務器端)和JavaScript(客戶端) – 2013-04-04 20:57:30

+0

好的,但是這個答案對我來說無能爲力。你能更具體地說明我的錯誤在哪裏嗎?也許可以指出我正確的方向? – 2013-04-10 18:12:35

回答

0

您嘗試在服務器端解析的表達式中使用客戶端運行時JavaScript變量index

我想你會得到JspException只是試圖服務器的<script>片段。

一種方式是打造coverageLimits在服務器上的JavaScript陣列,並嵌入到displaylimit功能

這裏是這樣做的一種方法:

function displaylimit(coveragedropdown) 
{ 
    var index = coveragedropdown.selectedIndex; 

    // Build the list on a server 
    // I am not a JavaScript expert, so you may need to 
    // do some escaping/quoting here 
    var coverageLimits = [ 
    <c:forEach items="${coveragelist}" var="coverage"> 
     ${fn:escapeXml(coverage.coverageLimit)}, 
    </c:forEach> 
    ]; 

    var limit = coverageLimits[index]; 
    document.getElementById("limit").innerHTML = limit; 
} 
相關問題