有条件地需要以a4j形式进行jsf验证

Luc*_*eni 2 java jsf seam ajax4jsf

我在jsf/a4j中使用有条件评估的表达式时遇到了一些问题

这是我的代码

<a4j:form>
         <h:inputText id="id1" value="#{mybean.myvalue}" size="1"
                   required="#{not mybean.condition}"
                   rendered="#{not mybean.condition}"
                   requiredMessage="Put a number in here" />

           <h:selectBooleanCheckbox value="#{mybean.condition}">
                <a4j:support event="onclick" reRender="id1"/>
            </h:selectBooleanCheckbox>

<a4j:commandButton action="#{mybean.myaction}" value="Do something" />

 </a4j:form>
Run Code Online (Sandbox Code Playgroud)

布尔复选框有条件地启用/禁用验证.

这不起作用:a4j:commandButton只是跳过验证.

谢谢.

McD*_*ell 6

如果inputText验证失败(Process Validations阶段),则不会更新值mybean.condition(Process Updates阶段).由于文本字段使用了必需属性,因此很有可能.

RichFaces doc的生命周期:

alt text http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html_single/images/newpic1.png

如果任何JSF阶段失败,则生命周期将跳至"渲染响应"以避免对无效输入进行操作.您可以使用h:messageh:messages标签来查看报告的错误(虽然因为您使用的是AJAX,所以您必须将它们放在可以重新渲染的内容中.

我猜你如果在aj4:support标签上设置ajaxSingle属性,你会得到你想要的行为.该文件说,这将只提交值的控制,因此文本字段不会在应用请求值/处理验证/处理更新阶段参与.