1

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のみが検証されて押されます。 [すべて送信]ボタンを押すと、すべてのフィールドが検証されます。

4

2 に答える 2

1

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

バリデータを追加すると、[Update C using A and B]のロジックは、すべてのバリデータがパスするか、immediate 属性が true に設定されている場合にのみ実行されます。その immediate 属性が true に設定されている場合、ボタン ロジックは、getValueまたはコンポーネントがバインドされているオブジェクトを使用して、送信されたコンポーネントの値を読み取ることができません。getSubmittedValueを使用する必要があります(悪い考えです)。

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

于 2009-01-13T11:10:17.207 に答える
0

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

于 2009-01-13T13:46:41.727 に答える