アクションに渡されたリクエスト パラメータ「name 」がある場合、「 name 」という名前のフィールドがあれば、それをActionクラスで受け取ることができます。これを行うのはどのインターセプターですか? のコードを見ましたが、パラメーターを値スタックに設定するだけで、アクション クラスの対応するフィールドには設定しません。ParametersInterceptor
2 に答える
ただし、アクションクラスの対応するフィールドではなく、パラメーターを値スタックに設定するだけです
あなたの推論にはちょっとした問題があります: アクション クラスは値スタックの一番上にあります! したがって、com.opensymphony.xwork2.interceptor.ParametersInterceptor が担当します。
ただし、アドバイスとして、実際にはアクション クラスに「name」という名前のパラメーターを持たず、そのようなフィールドをアクション クラスから「モデル」として機能する別のクラスに移動することをお勧めします。次に、アクション クラスに ModelDriven インターフェースを実装させます。これにより、アクション クラス インスタンスの代わりにモデル クラスが ValueStack の一番上に配置され、「name」パラメーターがモデル インスタンスにマップされます。
モデル/データの懸念をアクション/コントロールの懸念から別のクラスに分離すると、コードがより読みやすく、保守しやすくなります。もちろん、たとえば単一のパラメーターしかない場合、それを別のクラスに分離するのはばかげています。ただし、2 つまたは 3 つ以上のパラメーターを使用すると、分離の恩恵を受けることができます。