1

状況: 現在、Struts 1 から Struts 2 に移行しています。Struts 1 では、フォーム クラスが JavaBean 仕様に従う必要がありました。私のビジネス データ オブジェクトはすべて不変であるため、多くのクラスの JavaBean バージョンを作成し、2 つのクラス間でメソッドをマッピングする必要がありました。

Struts2 は、フォームの不変オブジェクトの使用をサポートしていますか?

もしそうなら、不変オブジェクトがフォームフィールドを使用してビルダーからインスタンス化されるように構成するにはどうすればよいですか?

4

1 に答える 1

2

OGNL はそのオブジェクトに対して setter を呼び出すため、リクエストから生成されるオブジェクトを不変にすることはできません。これが OGNL (およびほとんどの EL) のしくみです。

2 つのオプションがあると思います。カスタム パラメーター インターセプターを使用して何かを行うか、フォームに使用される Bean を受け取るコンストラクターまたはビルダーを作成することができます。

何も考えずに、おそらく後者を実行しますが、フォーム クラスが多数ある場合は、フォーム クラスを生成するための簡単なツールを作成するかもしれません。インターセプターの方がエレガントですが、おそらくリフレクションを使用する必要があります。

于 2013-05-02T16:30:13.963 に答える