处理表示层中的JSF验证错误,避免h:消息

时间:2012-10-04 08:01:10

标签: validation jsf

有没有办法让JSF对我的输入进行验证,但让我控制如何显示验证错误?我想避免使用h:message

当我在需要验证支持的表单中的每个输入组件下面编写h:message组件时,我发现它使我的代码太乱了。由于使用h:messages的页面上有多个表单不是一个选项,因为它也会显示其他表单的错误消息。所以我想将验证后发送的错误消息处理到表示层&使用JS / Jquery自己完成错误演示任务。那么我该如何处理JSF验证服务抛出的错误呢?

1 个答案:

答案 0 :(得分:0)

只需根据UIForm#isSubmitted()有条件地呈现<h:messages>

<h:form binding="#{form1}">
    <h:messages rendered="#{form1.submitted}" />
    ...
</h:form>
<h:form binding="#{form2}">
    <h:messages rendered="#{form2.submitted}" />
    ...
</h:form>
<h:form binding="#{form3}">
    <h:messages rendered="#{form3.submitted}" />
    ...
</h:form>

或者只是引入一些ajax魔法并仅更新当前表单而不是整个视图。

<h:form>
    <h:messages />
    ...
    <h:commandButton ...><f:ajax execute="@form" render="@form" /></h:commandButton>
</h:form>
<h:form>
    <h:messages />
    ...
    <h:commandButton ...><f:ajax execute="@form" render="@form" /></h:commandButton>
</h:form>
<h:form>
    <h:messages />
    ...
    <h:commandButton ...><f:ajax execute="@form" render="@form" /></h:commandButton>
</h:form>

  

所以我想将验证后发送的错误消息处理到表示层&amp;使用JS / Jquery自己完成错误演示任务。

创建custom component or renderer,替换<h:messages>