必須属性を持つフィールドがあります。フィールドに値を入力せずに [承認] ボタンを押してデータを保存すると、エラー メッセージが表示されます。ここまでは順調ですね。しかし、その直後に [キャンセル<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>
Bean コントローラー
public void addCloseWarn(ActionEvent actionEvent) {
FacesContext.getCurrentInstance().addMessage("closeMessage", new FacesMessage(FacesMessage.SEVERITY_WARN, null,
"Are you sure you want to leave the page?"));
}