代码之家  ›  专栏  ›  技术社区  ›  Luca Molteni

A4J表格中有条件要求的JSF验证

  •  2
  • Luca Molteni  · 技术社区  · 17 年前

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

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  6
  •   McDowell rahul gupta    17 年前

    如果 输入文本 验证失败(过程验证阶段),然后 mybean.条件 不会更新(进程更新阶段)。因为文本字段使用 必修的 属性,这很可能。

    RichFaces文档中的生命周期:

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

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

    我猜如果你把 阿贾克斯单体 属性 aj4:support 标签,你会得到你想要的行为。文档中说,这只会提交控件的值,因此文本字段不会涉及到应用请求值/流程验证/流程更新阶段。

        2
  •  0
  •   Max Katz    16 年前

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