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

从技术上讲,是的,可以使用验证器/立即执行此操作。但是,它不会特别简单。

如果您添加验证器,[使用 A 和 B 更新 C]中的逻辑将仅在所有验证器都通过或其立即属性设置为 true 时运行。如果它的 immediate 属性已设置为 true,则按钮逻辑无法使用getValue或组件绑定到的任何对象读取提交的组件值;它必须使用getSubmittedValue(一个坏主意)。

更好的方法是在所有控件都绑定到的托管 bean 中执行验证逻辑。您可以将验证逻辑放在按钮绑定的任何方法中。使用[Submit All]按钮将您的验证数据保存在您的数据库/持久性存储/其他中。

于 2009-01-13T11:10:17.207 回答
0

我通常使用 Ajax 做类似的事情,我会将我感兴趣的部分提交到服务器,在那里验证/处理,并将结果返回到页面。另一方面,它完全绕过了 JSF 和它的验证机制,所以我想这并不是最聪明/最佳的解决方案......

于 2009-01-13T13:46:41.727 回答