[Seasar-user:3025] Re: [S2JSF] s:forEach中のinputに値がセットされなくなる

Hokino Masatoshi m_hokino
2005年 12月 15日 (木) 18:49:40 JST


保木野です。

>本間です。
略
>うーん、残念です。私の環境で再現できれば良いのですが...
>デプロイするだけで再現できるwarファイルを頂くことはできます
>か? (どこかにアップしていただくとか)
>再現手順は教えていただいていますが、人手が入る以上手違いは起
>こり得ますので。

返信が遅くなってしまい、申し訳ありませんでした。
表題の現象を再現させる簡単なwarを作る事はできますが、アップする場所がありま
せん。
申し訳ないです。

一応、s2-jsf-blank-1.0.11.zipをベースに作った再現サンプルを添付いたします。
s2-jsf-blank-1.0.11.zipのjarをWEB-INF/lib下にコピーしてもらえれば
動きます。


さっとですが、 s2jsf のソースを読んで見ました。

immediate=falseのときは、
APPLY_REQUEST_VALUES → PROCESS_VALIDATIONS → UPDATE_MODEL_VALUES
という順でフェーズが処理されています。

immediate=trueのときは
APPLY_REQUEST_VALUES
のみが処理されているように見えます。

immediate=trueでページを遷移すると
APPLY_REQUEST_VALUESフェーズで、
org.seasar.jsf.component.ForEachのEditableValueHolderStateの
submittedValueに値がセットされます。

再度、現象の現れるページを表示したときに
org.seasar.jsf.component.ForEachのencodeChildrenが呼ばれ
EditableValueHolderStateのsubmittedValueの値を
コンポーネントにセットしているため
DTOの値が正しく表示されないという現象が起きているようです。
#上記の事を考えると、inputTextに依存した問題ではなさそうなので
#selectなどで試してみましたが現象は再現いたしました。

immediate=trueが指定されているときは、EditableValueHolderStateの
submittedValueをnullにすれば現象を回避できるような気がします・・・。

完全に理解したわけではないので、どう変更(修正?)すればいいと言うのは思いつ
きませんが
解決の糸口になれば・・・。

お手数をかけて申し訳ありません。
よろしくお願いします。

-------------- next part --------------
テキスト形式以外の添付ファイルを除去しました...
ファイル名: forEach-test.zip
型:         application/x-zip-compressed
サイズ:     46270 バイト
説明:       無し
URL:        http://lists.sourceforge.jp/mailman/archives/seasar-user/attachments/20051215/f4ab5e61/forEach-test-0001.bin


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