[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 メーリングリストの案内