相互に依存するフォームを持つ struts2 プロジェクトに取り組んでいます。私は struts2-conversation を見つけ、その単純な例をステップ実行して、 ここまでの会話メカニズムを理解しました (何か間違っている場合は訂正してください)。
- コントローラーは struts.xml でマップされます
- シリアライズ可能な ConversationContext と Storage-Service を保持します
- ConversationContext は、命名規則によってフォームにマップされた POJO を保持します
今私の質問は、検証をどこに置くべきですか?
この構造では、コントローラーは ConversationSupport を拡張する 1 つのみであり、それによって、validate、prepare、および addField- & ActionError メソッドを提供する ActionSupport です。しかし、コントローラー内で検証することは、コンテキスト全体を検証することを意味し、実際には問題を解決しません。
上記のコンテキスト内で POJO 内のアノテーションを使用して検証を試みましたが、コンテキストがフラッシュされていないかのように NullPointerException が発生し、struts2 の xml 検証アプローチが硬すぎると思います。(ところで、生成されたJavaScriptを提供する前に縮小する方法は?そして、なぜそんなに多くのオプションがあるのですか?)
Mark の会話インターセプター アプローチでも同様の問題が発生しましたが、これは実際には得られなかった回避策です。多分あなたはそこで私を助けることができます。