7

まず第一に、誤解がないように、これはPrimeFacesと同じ質問ですが、検証の条件付き更新この質問への回答は私には受け入れられないため、もう一度質問します。ポスターは彼らが求めていたものの回避策であり、それは実際には質問に答えません、そしてこの回避策は私にとってはうまくいきません。

それで、ここに私の質問があります:提出の結果に基づいてprimefacesコンポーネントを条件付きで更新するにはどうすればよいですか?

検証が成功し、バックエンドコードが正常に実行されない限り、どのような状況でも更新してはならないコンポーネントがあります。(つまり、検証は成功したが、バックエンドでSQL例外が発生した場合でも、コンポーネントは更新されません)。

常に更新できないのはなぜですか?ロジックが成功しない場合は、送信ボタンがクリックされる前と同じものに更新されます。できないから。これはキャプチャコンポーネントです。ajaxを介して更新すると、表示されなくなり、話は終わりです。Primefacesでチケットが開かれ、フラッシュコンポーネントがajaxで更新されることは想定されていないため、修正されないためにチケットが閉じられました。

したがって、フォームを送信するときは、ロジックが成功しない限り、キャプチャをそのままにしておく必要があります。ロジックが成功した場合は、キャプチャが画面から消えることを確認する必要があります。それを行うための最も簡単でクリーンな方法は何ですか?

これがn00bの質問である場合は、すみません。私はPrimefacesとJSFに本当に慣れていません。

4

3 に答える 3

14
RequestContext.getCurrentInstance().update("clientId")

条件付き更新に役立ちます。

再キャプチャの場合

RequestContext.getCurrentInstance().execute("Recaptcha.destroy()");
于 2012-12-17T17:08:16.920 に答える
2

バッキング Bean で変数を使用し、それを xhtml 部分で使用できます。
このような:

update="#{backingMB.updateString}"

したがって、条件の後に の値を入力できますが、updateStringで定義する場合はbackingMB、次のように入力する必要があります。

String updateString=""; // this will be id of the component to be updated  

このようにして、 NullPointerExceptionを取得しません。

于 2012-12-17T17:12:19.453 に答える