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 只是跳过验证。

谢谢。

4

2 回答 2

6

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

RichFaces 文档中的生命周期:

替代文字
(来源:jboss.org

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

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

于 2009-05-25T13:00:11.643 回答
0

mybean的范围是什么?如果它是请求范围,那么当您单击按钮时它的值将被重置,并且输入字段可能会被处理(如果呈现解析为“假”)。

于 2010-05-13T22:25:55.727 回答