[Seasar-user:4256] Re: [S2JSF] テキストフィールドを空にしても、以前の値が再表示される

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2006年 8月 4日 (金) 09:32:57 JST


shotです。

ひとまず、ここだけレスをします。
Validationが通ったあとにsubmittedValueをnullでクリアするのは
JSFの仕様の一部です。

なので、そこは変更することはできないです。


06/08/04 に cero<[E-MAIL ADDRESS DELETED]> さんは書きました:
> せろ@自己レスです。
>
> org.seasar.jsf.component.html.S2HtmlInputTextの83行目で、
> validationに通った場合(もしくはvalidatorが設定されていない場合)、
> submittedValueにnullを詰めているようですが、
> この一行を削除すれば、ひとまず問題は回避できました。
>
>
> もし問題なければ、削ってしまいたいと思いますが、
> 後で、submittedValueがnullかどうかで、何か判定しているのでしょうか?
>
> S2JSF/Myfacesの全体像が見えていないだけに、
> 削ってしまうのは、ちょっぴり不安です (^^;
>
> すみませんが、分かる方、お願いします。
>
> > -----Original Message-----
> > From: [E-MAIL ADDRESS DELETED]
> > [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of cero
> > Sent: Friday, August 04, 2006 1:07 AM
> > To: [E-MAIL ADDRESS DELETED]
> > Subject: [Seasar-user:4254][S2JSF] テキストフィールドを空にしても、以
>> > の値が再表示される
> >
> >
> > こんばんは、せろです。
> >
> > 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 mailing list
> > [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user
>


-- 
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================



Seasar-user メーリングリストの案内