JSF 2.0使用JS或AJAX清除验证错误消息

时间:2013-08-07 19:45:19

标签: jsf-2

我有一个带有两个单选按钮和两个相应文本框的网页。两者都是单一无线电组的一部分。该页面还有一个提交按钮。

o Radio1 [Textbox1] o Radio2 [Textbox2]

|提交|

当我选择Radio1并单击提交时,如果发生错误,则会显示验证错误消息。这些是gloabl错误消息,显示在页面顶部的所有字段。我使用了

的validatorMessage属性
<h:inputText> 

显示错误和

<f:validateRegex pattern="(^[0-9]{1,15}$)" /> 

验证错误。我也有

<h:messages class="errors"  style="color:red;" layout="table" />

位于xhtml页面之上。

我的要求是,当我点击Radio2时,我需要Radio1的错误消息消失,因为它们与Radio2无关。反之亦然。

有没有办法在选择Radio2时使用AJax或JS清除Radio1的错误消息?

更新了无线电代码:

<t:selectOneRadio id="options" value="#{reqscope.selectedRadio}" layout="spread">
    <f:selectItem itemValue="radio1" itemLabel="Policy number" />
    <f:selectItem itemValue="radio2" itemLabel="Customer ID" />    
</t:selectOneRadio>

<t:radio for="options" index="0"  name="search_by1" onclick="searchSelected()">

2 个答案:

答案 0 :(得分:2)

您可以使用<f:ajax execute>指定那些需要处理(并进行转换和验证)的字段。您可以使用<f:ajax render>指定需要进行ajax更新的组件,在本例中为messages组件,以便使用新消息刷新它。

在文本框的<f:validateRegex>上,只要所选单选按钮值与预期值不匹配,就可以使用disabled属性禁用验证。

以下示例应该:

<h:messages id="messages" ... />

<h:form id="form">
    ...
    <t:selectOneRadio id="options" ...>
        ...
        <f:ajax execute="@this textbox1 textbox2" render=":messages" />
    </t:selectOneRadio>
    ...
    <h:inputText id="textbox1" ...>
        <f:validateRegex ... disabled="#{param['form:options'] != 'radio1'}" />
    </h:inputText>
    <h:inputText id="textbox2" ...>
        <f:validateRegex ... disabled="#{param['form:options'] != 'radio2'}" />
    </h:inputText>
    ...
</h:form>

答案 1 :(得分:0)

使用Prime Faces可以使用

您可以在以下链接中查看示例 http://www.primefaces.org/showcase/ui/misc/resetInput.xhtml