我有一个具有必需属性的字段。当我按下“接受”按钮保存一些数据而不在字段中输入任何值时,会显示一条错误消息。到现在为止还挺好。但是,如果在那之后我决定单击“取消”按钮,则该错误消息会覆盖应该显示在<p:dialog/>
元素内的确认消息。
注意:如果我改为使用该<p:confirmDialog/>
组件,似乎没有问题,因为我猜它使用的是message=""
属性,而不是<p:messages/>
标签。
XHTML
<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>
豆控制器
public void addCloseWarn(ActionEvent actionEvent) {
FacesContext.getCurrentInstance().addMessage("closeMessage", new FacesMessage(FacesMessage.SEVERITY_WARN, null,
"Are you sure you want to leave the page?"));
}