我在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只是跳过验证。
谢谢。
如果inputText验证失败(Process Validations阶段),则不会更新值mybean.condition(Process Updates阶段)。由于文本字段使用了必需属性,因此很有可能。
RichFaces doc的生命周期:
(来源:jboss.org)
如果任何JSF阶段失败,则生命周期将跳至“渲染响应”以避免对无效输入进行操作。您可以使用h:message和h:messages标签来查看报告的错误(尽管因为您使用的是AJAX,所以您必须将它们放入可以重新渲染的内容中。
我猜你如果在aj4:support标签上设置ajaxSingle属性,你会得到你想要的行为。文档说这只会提交控件的值,因此文本字段不会涉及Apply Request Values / Process Validations / Process Updates阶段。
mybean的范围是什么?如果是请求范围,则单击该按钮时将重置其值,并且可能根本处理输入字段(如果呈现解析为“false”)。