【问题标题】:Primefaces dialog client validation not displayingPrimefaces对话框客户端验证不显示
【发布时间】:2014-08-27 06:15:48
【问题描述】:

我在复合控件上有一个 Primefaces 5.0 模式对话框。该对话框有几个字段标记为必填项。当单击对话框上的按钮时,我希望客户端验证会触发,并且似乎确实如此,因为未调用支持 bean,但未显示消息:

<p:dialog id="dialogCorporateShareHolder" header="Shareholder (Company)" 
    widgetVar="dlgCorporateShareHolder" modal="true">
    <p:panelGrid columns="3" id="corporateShareHolderDetails">

        <h:outputLabel for="companyName" value="Company name"/>

        <p:inputText id="companyName" required="true" 
           value="#{cc.attrs.corporateShareHolder.companyName}" 
           label="Company name"/>

        <p:message for="companyName"/>

        <f:facet name="footer">
            <p:commandButton id="submitCorporate" value="Submit" 
               update="corporateShareholders"
               actionListener="#{cc.attrs.controller.addCorporateShareHolder}"/>
        </f:facet>
    </p:panelGrid>

</p:dialog>

对话框显示,验证被调用(我很确定),但没有显示任何消息。

【问题讨论】:

  • 你可以试试 update="corporateShareholders CorporateShareholderDetails"
  • 成功了!将其添加为答案@JaqenH'ghar
  • 您确实根本没有更新&lt;p:message&gt;。几乎每天都会有人问这种问题“尽管我没有在 &lt;p:commandButton update&gt; 中指定它,但我希望某些组件会被 ajax 更新” 几乎每天都会被问到,我们需要一个规范的欺骗。
  • @SeanCoetzee 很高兴它起作用了,这些东西可以不可见... id=corporateShareholders 的组件是什么,只是一些列表?
  • 是的,只是一个数据网格。

标签: jsf-2 primefaces modal-dialog


【解决方案1】:

您只需要更新p:message 或父级,例如使用

update="corporateShareholders corporateShareholderDetails" 

顺便说一句。我相信最佳实践是

  • 对话框最后在 xhtml 中,在其他表单之外
  • 在对话框本身中有一个表单

【讨论】:

  • 我很想这样做,但我的对话框已经在一个表单中的复合控件中。
  • 不用担心,它已经对你有用了,我只是想提醒自己:)
  • 在您的 cmets 之后,我开始遇到其他相关问题,最终将对话框移到自己的表单中。好多了,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 2015-11-21
  • 1970-01-01
相关资源
最近更新 更多