3

3 つのオプションとinputTextArea. ページの送信ボタンを押すと、いくつかの検証を行う必要があります... そのために、ラジオにバリデーターを配置しました。問題は、バリデーターが実行されるときにinputTextAreaラジオの値が必要ですが、ページが送信される前にページで定義された値ではなく、古い値が含まれていることです。

:String.valueOf(textArea.getValue()).equals(""))最初に送信されたときのコードString.valueOf(textAreaOcorrencia.getValue())は ですnullが、textAreaは空だったので、空の文字列であるはずでした。2 回目に送信されると、1 回目の送信時に想定されていた値になります。これが JSF ライフサイクルに関係していることは知っていますが、これらの値を更新する方法がわかりません。

4

1 に答える 1

3

リクエスト値の適用フェーズで、送信された値が設定され、 として使用可能になりますsubmittedValue。検証フェーズでは、送信された値が検証され、変換されて として設定されvalueます。コンポーネントは、コンポーネント ツリーに表示されるときに、上から下の順序で検証されます。

したがって、問題のコンポーネントがコンポーネント ツリーで現在のコンポーネントのUIInput#getSubmittedValue()に実際に表示される場合は、 の代わりに でその値を取得する必要がありますUIInput#getValue()

JSF ライフサイクルの詳細については、この自己実践記事が役立つ場合があります。

于 2010-02-10T19:07:12.957 に答える