JSF 2.0の値が送信されていません
-
29-10-2019 - |
質問
新しいページの値で豆を更新するのに苦労しています。ページに2つの送信ボタンがあり、ページのモードのブール値に基づいて表示される1つの[1つ]が[表示]のみを切り替えます。ページが更新されている場合(検証なし)、即時=「true」の送信ボタンが表示されます。 。ページがプロセスモード(検証)にある場合、即時=「true」がない送信ボタンを表示します。私が遭遇している問題は、私が更新モード(検証なし)のとき、入力フィールドの値がBeanで設定されていないことです。このモードにいるときにやりたいことは、そのままページを保存して終了します。そのページの情報が処理する準備ができていないか、「実際に使用」する場合は、検証は必要ありません。とはいえ、プロセスモード(検証)にページがある場合、すべてが意図したとおりに機能します。値は提出され、保存されます。
私がやろうとしていることについて特別なことは何もないので、私はまだコードを投稿していません。単純なゲッター /セッターを指す値バインディングがあります。私の豆は@viewscopeにあります。
私は彼の優れたブログスポット投稿でBaluscの例を使用しようとしました: debug-jsf-lifecycle。入力フィールドに即時=「true」を置くことは、即時= "true"で[送信]ボタンをクリックしても影響しません。すべてとすべて、私がそれを理解する方法は、Uicommandの即時=「true」です。入力フィールドに置くだけで、検証がより早く実現します。私は何かが足りませんか?
何か案は?これに関するすべての助けが最も高く評価されています!
アプリの詳細:
JSF 2.0.3
Tomcat 6.0.14
解決
immediate="true"
検証を無効にするつもりはありません。検証に優先順位を付けるか、入力の処理を完全にスキップすることを目的としています。参照してください サマリー 記事の下部に。
設定により検証を無効にする必要があります required="false"
, 、 また <f:validator disabled="true">
. 。これがあなたがあなたを想定している例です boolean process
フォームの状態を表すプロパティ:
<h:inputText value="#{bean.value1}" required="#{bean.process}" />
<h:inputText value="#{bean.value2}" required="#{bean.process}">
<f:validator validatorId="someValidatorId" disabled="#{!bean.process}" />
</h:inputText>
...
このようにして、フィールドは必須ではなく、いつ process
評価します false
.