如何在Struts 2中更新JSP中的会话值

时间:2013-01-21 08:37:32

标签: struts2 session-variables textfield

我正在使用Struts 2.0。我有一个Java Bean Person,其字段为perName,perAge,perMail&还有很多。我想在JSP上显示Java Bean {[1, person1], [2, person2])的Map,并允许用户使用文本字段从同一个JSP更新它。 bean中有很多变量,其中一些是可编辑的,而其中一些则不是。

例如,perName可编辑时perName不可编辑。我不想显示不可编辑的字段。如果我只使用可编辑文件,更新后,我将不可编辑的字段设为null(更新后perName为null)。因此,我无法指定名称属性,因为它在运行时更改。所以我将它们放在HTTP Session中并显示它们。我使用#session.person[iterator index].perAge指定文本字段的名称属性。直到这一点,一切正常。但是,如果我更改任何文本字段中的值&尝试更新,我得到旧的会话属性而不是更改一个。我希望旧的会话属性具有新的更改值,不可编辑字段的值应该在用户请求中保留。我不想使用JavaScript。 OGNL或表达是最受欢迎的。

public class PersonDTO implements Serializable {
    private String perName;
    private int perAge;

    public String getPerName() {
        return perName;
    }

    public void setPerName(String perName) {
        this.perName = perName;
    }

    public int getPerAge() {
        return perAge;
    }

    public void setPerAge(int perAge) {
        this.perAge = perAge;
    }
}
  <s:form action="updatePerson" id="updatePerson">
        <table>
            <tr>
                <td>AGE:<s:textfield name="#session.person.perAge" />
                </td>
            </tr>
            <tr>
                <td><s:submit id="update" value="Update" />
                </td>
            </tr>
        </table>
    </s:form>

1 个答案:

答案 0 :(得分:0)

感谢您的支持。经过一天的GOOGLE,我发现无法使用Struts标签直接更新会话。您可以使用会话信息在scriplet中显示和更新会话,但不能直接更新会话。您可以参考Struts2 form to update object in Session map?了解更多信息。再次感谢您的帮助!!!