2010-01-19 202 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中没有做的很清楚。

希望这会有所帮助。