[Seasar-user:4254] [S2JSF] テキストフィールドを空にしても、以前の値が再表示される
cero
[E-MAIL ADDRESS DELETED]
2006年 8月 4日 (金) 01:07:26 JST
こんばんは、せろです。
S2JSFにて、DTOのライフサイクルをSESSIONとした時に、
「テキストフィールドを空にしても、バリデーションエラーが発生すると、
以前入力した値がテキストフィールドに表示される」
という問題が起こっています。
どなたか、既に解決/回避されていれば、教えて頂きたいと思います。
具体的には、Employee Managementでは、
EmployeeDtoをSESSIONとすると、以下のように振舞います。
------------------------------------------------------------
1. Employee ManagementのCreate画面を開く。
2. 入力画面で、各フィールドに適切な値を入れる。
3. 「confirm」ボタンを押して、確認画面に進む。
4. 確認画面で「previous」ボタンを押して、入力画面に戻る。
5. 入力画面で、全フィールドの値をクリアする。
6. 「confirm」ボタンを押して、バリデーションエラーを発生させる。
→ ここで、必須入力である「EmployeeNo」と「EmployeeName」を除き、
各フィールドの値が、2.で入力した値となる。
------------------------------------------------------------
各フィールドに何らかの値を入力した場合は、
バリデーションエラーが発生しても、以前の値に戻る事はありません。
「REQUESTの値が空なら、SESSIONから値を取得する」
という動作をしているのでしょう。
ただ、requiredの項目だけは、入力した値が反映されているため、
何か回避策があるのでは、と思っています。
# もちろん、SESSIONではなく、REQUESTを使えば解決しますが、
# hiddenタグを減らすために、SESSIONを使いたいんですよね。
なお、再現方法は以下の通りです。
------------------------------------------------------------
1. S2JSF Example 1.0.15を動かせる状態にする。
2. EmployeeDtoに以下の一行を追加。
public static final String COMPONENT = "instance = session";
3. ビルドして、Tomcatを起動。
4. 上の方に書いた通りの遷移を行なう。
------------------------------------------------------------
以上、よろしくお願いします。
# 自分でも、ソース見てみます (^^;
Seasar-user メーリングリストの案内