【问题标题】:Primefaces DataTable cellEdit required inputText not evaluatedPrimefaces DataTable cellEdit 需要 inputText 未评估
【发布时间】:2015-06-18 08:12:01
【问题描述】:

有人可以解释为什么下面的最小示例不会评估所需的元素吗?或者它是“错误”的方式,我不知道有更好的方式。

我知道我的问题与以下问题类似:Primefaces cellEditor required inputText。对我来说,该解决方案似乎更像是一种解决方法,而不是解决此问题的有效方法。所以是的任何想法如何处理这个?

代码:

 <p:dataTable id="ruleTableID" var="rule" value="#{rC.rules}" widgetVar="rowsTable" 
     rows="20" editable="#{rC.editable}" 
     editMode="cell" paginator="true" 
     paginatorPosition="bottom" paginatorTemplate="{Save}"
     emptyMessage="#{t['rule.empty']}">
  <p:ajax event="cellEdit" update=":newRules:messages, :newRules:" />
  <p:column headerText="#{t['policy.registerNumber']}">
    <p:cellEditor>
      <f:facet name="input">
        <p:inputText styleClass="ruleInputText" value="#{rule.registerNr}" required="true" maxlength="4">
          <f:validateLength minimum="4" />
          <f:validateRegex pattern="([A-Z\d]{4})" />
          <p:clientValidator/>
        </p:inputText>
      </f:facet>
      <f:facet name="output">
        <h:outputText value="#{rule.registerNr}" />
      </f:facet>
    </p:cellEditor>
  </p:column>

  <f:facet name="{Save}">
    <p:commandButton id="saveButton" value="#{t['button.save']}" action="#{rC.saveRules}" update=":newRules" rendered="#{rC.isAllValueSet}" />
   </f:facet>

</p:dataTable>

【问题讨论】:

  • 我不知道它是否导致了问题,但你的正则表达式看起来有问题。您指定的最小长度为 4,但您的正则表达式只接受一个字符 (ref)。
  • 不是问题,但我改了,谢谢^^

标签: jsf jsf-2 primefaces


【解决方案1】:

如果您使用客户端验证,则必须将属性 ajax="false"validateClient="true" 添加到您的命令按钮

您可以在此处查看示例: http://www.primefaces.org/showcase/ui/csv/event.xhtml

【讨论】:

  • hmartos,我从来没有使用过这个 PrimeFace 的组件。它与&lt;f:ajax/&gt;&lt;p:ajax/&gt; 有何不同?
  • 解决了一半的问题。现在它会在您位于 &lt;f:facet name="output"&gt; 内时验证是否需要,但其他列中的值不是验证的一部分。所以还是可以提交空表单
猜你喜欢
  • 2018-07-15
  • 2013-09-07
  • 2014-03-29
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多