1

アクションに渡されたリクエスト パラメータ「name 」がある場合、「 name 」という名前のフィールドがあれば、それをActionクラスで受け取ることができます。これを行うのはどのインターセプターですか? のコードを見ましたが、パラメーターを値スタックに設定するだけで、アクション クラスの対応するフィールドには設定しません。ParametersInterceptor

4

2 に答える 2

1

ただし、アクションクラスの対応するフィールドではなく、パラメーターを値スタックに設定するだけです

あなたの推論にはちょっとした問題があります: アクション クラスは値スタックの一番上にあります! したがって、com.opensymphony.xwork2.interceptor.ParametersInterceptor が担当します。

于 2012-04-26T22:21:49.370 に答える
0

ただし、アドバイスとして、実際にはアクション クラスに「name」という名前のパラメーターを持たず、そのようなフィールドをアクション クラスから「モデル」として機能する別のクラスに移動することをお勧めします。次に、アクション クラスに ModelDriven インターフェースを実装させます。これにより、アクション クラス インスタンスの代わりにモデル クラスが ValueStack の一番上に配置され、「name」パラメーターがモデル インスタンスにマップされます。

モデル/データの懸念をアクション/コントロールの懸念から別のクラスに分離すると、コードがより読みやすく、保守しやすくなります。もちろん、たとえば単一のパラメーターしかない場合、それを別のクラスに分離するのはばかげています。ただし、2 つまたは 3 つ以上のパラメーターを使用すると、分離の恩恵を受けることができます。

于 2012-04-29T21:44:44.627 に答える