【问题标题】:Conditionally required jsf validation in a4j form以 a4j 形式有条件地要求 jsf 验证
【发布时间】:2010-10-28 17:11:00
【问题描述】:

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


    【解决方案1】:

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

    来自 RichFaces 文档的生命周期:


    (来源:jboss.org

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

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

    【讨论】:

    • 谢谢,但我应该把 ajaxSingle 属性放在哪里?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 2020-10-27
      • 1970-01-01
      • 2019-03-22
      • 2013-10-02
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      相关资源
      最近更新 更多