質問

新しいページの値で豆を更新するのに苦労しています。ページに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.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top