2012-02-29 8 views
0

からのデータでのStruts 1のActionFormを初期化します。私はちょっと覚えていない。は、私はそれが可能だ知っているので、この半ダース回をやったのHttpSessionオブジェクト

私は、ユーザーのHttpSessionオブジェクトからのデータでのStruts 1のActionFormのプロパティを初期化したいのですが、フォームが最初に作成されている場合のみ。実際には、HttpSessionから来ているという事実についてはあまり心配しないでください。重要なのは、データが動的でユーザーごとであり、一度しか初期化されていないことです。ユーザーがこのフィールドのデータを変更した場合

また、ユーザーのエントリは存続すべきです。つまり、ユーザーが最初にフォームを見ると、初期化されたデータが表示されます。フィールドを変更してフォームを送信し(関連するアクションを呼び出して)、後でこのフォームに戻った場合は、そのフィールドにそのエントリが表示されます。データはダイナミックでユーザーごとなので

はもちろんのstruts-config.xmlのフィールドを初期化することはできません。フォームのコンストラクタでも同じことが言えます。私はActionFormのreset()メソッドがデフォルト状態にプロパティをリセットするために呼び出されるのを見るが、フォームが読み込まれてページに表示される前に呼び出されたかどうかはわからない。私はそれがオプションだと思いますが、私は最初の呼び出しで初期化をしたいだけです。それはほんのちょっと複雑なようです(私はboFirstTimeメンバ変数フラグか何かが必要でしょうか?)。

誰でも手助けできますか?

答えて

1

私は何をやってしまったことのActionFormのリセットを()をオーバーライドし、それがnullまたは空白である場合にのみ、所望の特性を設定しました。私が初期化する必要があるプロパティは、クラスメンバ変数_strMailToで表されます(私は誰も知っていませんが、私はメンバ変数にアンダースコアを使用します)。

reset()は、ActionFormプロパティが初めて使用される前に呼び出され、関連付けられたActionのフォームのフィールドに値が設定されています。このようにして、ユーザーが最初にフォームを見ると、事前に入力したデータがそこにあります。しかし、彼らがそれを変更し、後で再びフォームに着陸すると、最後にフォームを提出したときにフィールドに入れたテキストが表示されます。

私は

public void reset(ActionMapping mapping, HttpServletRequest request) { 
    if (_strMailTo == null || _strMailTo.equals("")) { 
     String strRemoteUser = request.getRemoteUser(); 
     _strMailTo = chOps.UtilityUsers.getEmail(strRemoteUser); 
    } 
} 
...多分私もまだもうStrutsの1を使用した唯一のだと思います
関連する問題