私は Struts2 とPreparableインターフェースを実装するアクションを使用しています。
フォームを送信すると、アクション プロパティがprepare()アクション メソッドに設定されません。アクション メソッドで値を取得しますが (例: execute())、prepare()メソッドでは空です。
prepare()メソッドを実行する前にプロパティ セットを取得するにはどうすればよいですか?
私は Struts2 とPreparableインターフェースを実装するアクションを使用しています。
フォームを送信すると、アクション プロパティがprepare()アクション メソッドに設定されません。アクション メソッドで値を取得しますが (例: execute())、prepare()メソッドでは空です。
prepare()メソッドを実行する前にプロパティ セットを取得するにはどうすればよいですか?
デフォルトの Interceptor スタックでは、Prepare Interceptor は Parameters Interceptor の前に実行されます。これは、Prepare Interceptor がメソッドを実行するときに、パラメーターの注入がまだ行われていないことを意味しますprepare()。パラメーター インターセプターを準備インターセプターの前に移動するか、それを複製して、準備インターセプターの前に 1 つの宣言を配置する必要があります。
その目的で作成されたデフォルトの Interceptor Stack がありますparamsPrepareParamsStack。詳しくはこちらとこちらをご覧ください。
この種の問題は Struts2 で再発することに注意してください。Interceptor スタックがどのように機能するか、およびすべての Interceptor が処理するビジネスを理解する必要があります。
たとえば、ModelDriven を使用している場合、またはWildcard Mapping を使用している場合に発生します。また、カスタム インターセプターを間違った場所に配置すると、確実に発生します。