Primefaces:必填字段消息覆盖<p:dialog>消息</p:dialog>

时间:2013-02-06 19:14:36

标签: jsf dialog primefaces validation

我有一个具有必需属性的字段。当我按接受按钮保存某些数据而不在字段中输入任何值时,会显示错误消息。到现在为止还挺好。 但是,如果在此之后我决定单击取消按钮,该错误消息将覆盖应该在<p:dialog/>元素内显示的确认消息。

注意:如果我使用<p:confirmDialog/>组件,似乎没有问题,因为我猜它使用message=""属性,而不是{{1 }} 标签。

XHTML

<p:messages/>

Bean控制器

<p:dialog>
<p:outputPanel>
      <h:form>

      <h:outputText value="Field:"/>
      <p:inputText id="field" value="" type="text" required="true" requiredMessage="You must complete the field" />                         
      <p:growl id="messages" showDetail="true"/>

      <p:commandButton id="dialogCancel" value="Cancel" oncomplete="confirmCancelDialog.show();"  actionListener="#{controller.addCloseWarn}" />    

      </h:form>
</p:outputPanel>
</p:dialog>

<h:form>
<p:dialog id="confirmCancelDialog" header="Warning!" widgetVar="confirmCancelDialog" modal="true" >                                         
    <p:messages id="closeMessage" showDetail="true" autoUpdate="true" />                                    
    <p:commandButton id="confirm" value="Accept" onclick="..." />  
    <p:commandButton id="decline" value="Cancel" onclick="..." />               
</p:dialog> 
</h:form>

1 个答案:

答案 0 :(得分:2)

取消按钮问题是您的表单已提交并且已执行验证。您可以将process="@this"属性添加到commandButton,因此不会处理表单的其他部分,并且会执行您的addCloseWarn方法。

我还想补充一点,这可能不是message标签的标准用法。它用于显示错误,警告和成功消息,而不是确认问题。因此,使用confirmDialog或使用普通文本的标准对话框和确定 - 取消按钮。