Struts2.0を使用しています。perName、perAge、perMailなどのフィールドを持つJavaBeanPersonがあります。JSPでJavaBeanのマップを表示し{[1, person1], [2, person2])
、ユーザーがテキストフィールドを使用して同じJSPからマップを更新できるようにしたい。Beanには多くの変数があり、編集可能なものと編集できないものがあります。
たとえば、perNameは編集可能ですが、perAgeは編集可能です。編集できないフィールドを表示したくありません。ediatableフィールドのみを使用すると、更新後、編集不可能なフィールドがnullとして表示されます(更新後、perNameはnullになります)。そのため、実行時に変更されるため、name属性を指定できません。だから私はそれらをHTTPセッションに入れて表示しています。を使用してテキストフィールドの名前属性を指定しています#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>