在Struts中单击“提交”按钮时,在会话中设置变量

时间:2011-12-15 17:39:31

标签: session struts2

我有一个迭代器,它通过一个列表并创建他们的名字,并为每个人创建一个按钮。我想当用户点击按钮时,在会话中点击相同的名称 这是我的代码

        <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放入会话中!但我只想通过点击不同的按钮在会话中添加不同的东西! 任何身体可以帮助吗?

2 个答案:

答案 0 :(得分:1)

有两种解决方案:

  1. 将值与表单一起提交(隐藏字段可用于此目的)。然后在操作类中设置会话变量。
  2. 创建同步ajax请求以设置会话值,单击提交按钮。
  3. 当加载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标记 - 这不是你在点击按钮上设置会话变量的方式。

需要在处理提交的操作中设置会话变量。