質問

JSFでは、JSFの検証フレームワーク(別名、バリデーター、即時、必須など)を使用して、次の検証/更新シナリオを解決できますか?

+-- Form ----------------------------------------------------+
|                                                            |
| Field A: |____________|v|                                  |
| Field B: |____________|v|                                  |
| Field C: |____________|v| Button: [Update C using A and B] |
| Field D: |____________|v| Button: [Update D using B and C] |
|                                                            |
| More Fields: ...                                           |
|                                                            |
| Button : [Submit All]                                      |
+------------------------------------------------------------+

すべてのフィールドがドロップダウンであり、[Update C]ボタンを押すとA、B、Cのみが検証され、残りは検証されない場合、[Update D]ボタンを押すとフィールドB、C、Dのみが検証して[すべて送信]ボタンを押すと、すべてのフィールドが検証されます。

役に立ちましたか?

解決

技術的には、はい、バリデーター/イミディエートでこれを行うことができます。ただし、それは特に単純ではありません。

バリデーターを追加する場合、すべてのバリデーターがパスするか、その属性がtrueに設定されている場合にのみ、 [AおよびBを使用してCを更新] のロジックが実行されます。即時属性がtrueに設定されている場合、ボタンロジックは getValue またはコンポーネントがバインドされているオブジェクト。 getSubmittedValueを使用する必要があります。 (悪いアイデア)。

より良いアプローチは、すべてのコントロールがバインドされているマネージドBeanで検証ロジックを実行することです。検証ロジックは、ボタンがバインドされているメソッドに配置できます。 [すべて送信] ボタンを使用して、検証済みのデータをデータベース/永続ストアなどに保存します。

他のヒント

私は通常、Ajaxで同様のことをしていたので、興味のある部分をサーバーに送信し、そこで検証/処理し、結果をページに返しました。一方、これはJSFの完全なバイパスであり、検証メカニズムであるため、実際には最も賢明で最適なソリューションではないと思います...

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