我正在使用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>
答案 0 :(得分:0)
感谢您的支持。经过一天的GOOGLE,我发现无法使用Struts标签直接更新会话。您可以使用会话信息在scriplet中显示和更新会话,但不能直接更新会话。您可以参考Struts2 form to update object in Session map?了解更多信息。再次感谢您的帮助!!!