【问题标题】:JSF 2 Validation OptionsJSF 2 验证选项
【发布时间】:2012-09-04 07:41:32
【问题描述】:

我正在使用 JSF 2 和 Primefaces。但是我现在需要做一些更复杂的验证,特别是跨字段验证,也许还有一些涉及表达式语言的验证(这样我就可以在我的 xhtml 页面中进行条件验证)。

我认为我目前的设置无法做到这些,但我一直在阅读我可以使用的各种其他插件,例如:

  • 接缝
  • ExtVal
  • JSR303

只是想知道最推荐的方法是什么。 ExtVal 是否需要 MyFaces 作为先决条件?如果是这样,MyFaces 会与 PrimeFaces 冲突吗?

我对不同的 jar 进行了一些试验,但遇到了一些冲突,因此感谢任何反馈。

[更新] 根据我的评论,我使用了 OmniFaces,这只是下载 jar 文件然后将命名空间添加到我的页面的情况:

...
      xmlns:o="http://omnifaces.org/ui"
      xmlns:of="http://omnifaces.org/functions"
...

然后我将其用作测试用例(以确保密码和确认密码都相同,但仅当其中一个具有值时)。这很容易解决我的两个“问题”。

<o:validateEqual id="equal" components="password confirmPassword" disabled="#{editUserAdminController.user.password != '' || editUserAdminController.user.confirmPassword}"/>

谢谢

【问题讨论】:

    标签: java jsf-2


    【解决方案1】:

    编辑:如果应用程序/服务器提供了一个,JSF 可以使用JSR303 的实现。跨领域验证有点棘手,但绝对可以使用可用的技术来完成。

    您可能还想看看OmniFaces library - 它具有跨字段验证以及许多其他有用的功能,并且不依赖于特定的 JSF 框架。

    【讨论】:

    • 您的第一句话并不完全正确。 JSF 本身根本不使用 JSR303 进行默认验证,例如 required="true"&lt;f:validateSomething&gt; 等,但 JSF 只能识别它在 webapp 中的存在并将验证委托给它。使用的特定 JSR303 实现不是特定于 JSF,而是特定于 webapp 或 servletcontainer。 IE。 JSR303 完全独立于 JSF。
    • 完美,谢谢你们。我沿着 OmniFaces 路线走下去,效果很好。也很容易上手。写得很好的人;-)
    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2011-01-29
    • 2010-11-12
    • 2018-03-16
    • 1970-01-01
    相关资源
    最近更新 更多