我有一个迭代器,它通过一个列表并创建他们的名字,并为每个人创建一个按钮。我想当用户点击按钮时,在会话中点击相同的名称 这是我的代码
<s:iterator value="packageCities" status="portStatus">
<tr>
<td>
<s:property value="cityName" />
</td>
</tr>
<s:if test="%{status == 0}">
<tr>
<td>
<s:submit method="open" align="center" value="" cssStyle="background: transparent url(image/open.png) no-repeat center top; border: 0px; width: 150px; height: 30px;" >
<s:set name="button" value="cityName" scope="session"/>
</s:submit>
</td>
</tr>
</s:if>
</s:iterator>
但问题是它只设置了最后一个属性,当用户点击按钮时它没有设置它!所以当它创建按钮时它会将cityName放入会话中!但我只想通过点击不同的按钮在会话中添加不同的东西! 任何身体可以帮助吗?
答案 0 :(得分:1)
有两种解决方案:
当加载jsp时提到的Dave已经设置了值,你无法从客户端更改它们。
修改强>
好的,正如您所要求的,这是第一种方法的基本概念。我们的想法是使用相应的cityName
设置提交按钮的ID,然后单击按钮调用javascript函数,使用单击的按钮ID(即其{的{设置隐藏字段的值) {1}})
cityName
<强>的Javascript 强>
<s:form>
<s:hidden id="value_to_submit" name="value_to_submit"/>
<s:iterator value="packageCities" status="portStatus"><s:form>
....
<s:if test="%{status == 0}">
<tr>
<td>
<s:submit id="%{cityName}" onclick="set_hidden_value(this.id)" method="open" align="center" value="" cssStyle="background: transparent url(image/open.png) no-repeat center top; border: 0px; width: 150px; height: 30px;" >
</s:submit>
</td>
</tr>
</s:if>
</s:iterator>
</s:form>
现在,您可以在动作类中捕获变量function set_hidden_value(myvalue){
document.getElementById("value_to_submit").value=myvalue;
}
的值,并在那里设置会话变量。
答案 1 :(得分:0)
两个问题。
一,名称始终相同,因此您始终设置相同的属性。
两个,更重要的是,JSP在到达浏览器时已经执行了所有JSP标记 - 这不是你在点击按钮上设置会话变量的方式。
需要在处理提交的操作中设置会话变量。