2010-01-19 243 views
2

我有以下代碼:覆蓋變量

<c:forEach items="${mergeList}" var="sublist" varStatus="index"> 
       <c:forEach items="${sublist}" var="item" varStatus="row"> 

所以我的打算是在列表中顯示的每個「項」。當用戶點擊某一行時,用完整的項目描述打開一個浮動窗口。我設置與請求範圍的變量,所以我可以在其他形式得到他們,

<c:set var="merge0" value="${sublist[0]}" scope="request" /> 
<c:set var="merge1" value="${sublist[1]}" scope="request" /> 
<c:set var="merge2" value="${sublist[2]}" scope="request" /> 

但問題是當我設置每次迭代變量,所以當浮動打開它總是出現的最後一個元素該列表當然每次都會覆蓋。我知道有什麼問題,但不知道如何解決。

有什麼建議嗎?

回答

1

如果「浮動窗口」涉及全新的HTTP請求,那麼您確實需要將它們或其標識符作爲請求參數傳遞。例如。

window.open('popup.jsp?itemid=${item.id}'); 

這樣的popup.jsp可以通過${param.itemid}訪問它們。或者如果在聆聽doGet()之間有一個servlet,您當然可以通過HttpServletRequest#getParameter()訪問它們。

如果「浮動窗口」是您使用JavaScript顯示的最初隱藏的固定格式,那麼只需將它們寫出來就好像它是JS變量一樣,以便您可以在JS上下文中訪問它們。例如。

<script> 
    var itemid = ${item.id}; 
</script> 

或者將它們寫成固定格式的明文或隱藏輸入元素。

<input type="hidden" name="itemid" value="${item.id}"> 

哪個最好的方法取決於實際的功能要求,這在您的topicstart中沒有做的很清楚。

希望這會有所幫助。