0

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>
4

1 に答える 1

1

ご協力ありがとうございました。GOOGLE で 1 日を過ごした後、Struts タグを使用して直接セッションを更新できないことがわかりました。スクリプトレットでセッションを表示および更新するためにセッション情報を使用できますが、セッションを直接更新することはできません。Session マップのオブジェクトを更新するために Struts2 フォームを参照できますか? 詳細については。もう一度助けてくれてありがとう!!!

于 2013-01-22T04:31:08.337 に答える