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

问题描述 投票:2回答:2

我在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>

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

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

谢谢。

java jsf seam ajax4jsf
2个回答
6
投票

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

RichFaces doc的生命周期:

alt text (来源:jboss.org

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

我猜你如果在aj4:support标签上设置ajaxSingle属性,你会得到你想要的行为。文档说这只会提交控件的值,因此文本字段不会涉及Apply Request Values / Process Validations / Process Updates阶段。


0
投票

mybean的范围是什么?如果是请求范围,则单击该按钮时将重置其值,并且可能根本处理输入字段(如果呈现解析为“false”)。

© www.soinside.com 2019 - 2024. All rights reserved.