2012-03-30 26 views
0

フォームにドロップダウンがあり、検証に失敗したときに問題が発生しました。私は準備可能なインターフェイスでxml検証を使用します。ドロップダウンのデータにアクセスするには、フォームからIDを渡す必要があります。問題は、検証に失敗し、prepare()/ prepareInput()が呼び出されたときに、IDを含むクラスの変数が1つも設定されていないときです。 IDは変更されない形式で非表示のパラメータです。ご意見をお聞かせください。 はStruts2の中で、 ユーリstruts2の検証:検証に失敗したときにドロップダウンリストを再作成

答えて

2

を準備する()ありがとうはそれは、アクションを初期化するために呼ばれているとコンストラクタに非常によく似た役割を埋め、多くの他のフレームワーク内のinit()の役割を持つという同義です。

default-stackを使用すると、アクションのすべてのパラメータが、検証が呼び出される前に設定されている必要があります。したがって、クライアントが実際にパラメータを渡している場合、ロジックの一部でクリアされない限り、なぜ、どのように欠けているのかわかりません。

フォームによって設定された値から派生したアクションのフィールドとして他のオブジェクトを取得する必要があり、そうでなければパラメータとして渡されることがあります。この場合、値が設定された後にprepareを呼び出して検証し、このシナリオが当てはまる場合はparams-prepare-paramsスタックが適切です。

個人的には、準備ロジックではなく、アクション実行メソッドに準備ロジックを配置します。 1つのクラスに複数のアクションを入れて、何が繰り返されるかを考慮してprepareメソッドが最も適切な場合のみです。 params-prepare-paramsは特別なケースですが、DIを使用すればそれを使う必要はないかもしれませんが、私が議論することもあります。

これは役に立たない場合は、アクションクラス/ xmlマッピング(存在する場合)を使用して質問を展開し、バリデーションXMLも提供してください。なぜこれが起こるのかがわかります。

関連する問題