0

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

例如,perName 不可编辑,而 perAge 可编辑。我不想显示不可编辑的字段。如果我仅使用可编辑文件,则在更新后,我将不可编辑字段设为空(更新后 perName 为空)。所以我不能指定 name 属性,因为它在运行时会发生变化。所以我把它们放在 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>
4

1 回答 1

1

谢谢你的支持。经过一天的GOOGLE,我发现无法直接使用Struts标签更新会话。您可以使用会话信息在 scriplet 中显示和更新会话,但不能直接更新会话。您可以参考Struts2 表单来更新 Session 映射中的对象吗?了解更多信息。再次感谢帮助!!!

于 2013-01-22T04:31:08.337 回答