Предпосылки:
- JSF 2.1
- Primefaces 5,2
- Glassfish 3.1Primefaces р: сообщения не будут показывать первый FacesMessage
история:
Я создал ар: диалог используется для отображения FacesMessages в элементе ap: messages. Этот диалог необходим, потому что перед тем, как продолжить, пользователь должен зафиксировать определенные FacesMessages с помощью кнопки «ОК».
Dialog:
<p:outputPanel id="modalMessage">
<p:dialog id="dlgMessageDialog" dynamic="true" style="z-index: 100"
closable="false" widgetVar="wigVarMessageDialog" modal="true"
appendTo="@(body)">
<f:facet name="header">
<h:outputText id="messageDialogHeader"
value="#{messageDialogBean.header}" />
</f:facet>
<p:outputPanel id="modalMessagePanel">
<h:form id="messageForm" enctype="multipart/form-data">
<p:messages id="messages" escape="false" closable="false"
showDetail="true" autoUpdate="true"
for="#{messageDialogBean.messageDialogId}"></p:messages>
<p:spacer height="20px"></p:spacer>
<p:commandButton value="#{msg.btnOk}"
oncomplete="PF('wigVarMessageDialog').hide()" />
</h:form>
</p:outputPanel>
</p:dialog>
</p:outputPanel>
Bean:
@Named("messageDialogBean")
@SessionScoped
public class MessageDialogBean implements Serializable {
private static final long serialVersionUID = 1L;
private final String messageDialogId = "messageDialogId";
private FacesMessage message = new FacesMessage();
private String header = "test";
public void showMessage(final String pHeader, final FacesMessage pMessage) {
if (pMessage != null) {
setHeader(pHeader);
this.message = pMessage;
show();
}
}
public void showWarn(final String pHeader, final String pSummary, final String pDetail) {
setHeader(pHeader);
this.message = new FacesMessage(FacesMessage.SEVERITY_WARN, pSummary, pDetail);
show();
}
public void showInfo(final String pHeader, final String pSummary, final String pDetail) {
setHeader(pHeader);
this.message = new FacesMessage(FacesMessage.SEVERITY_INFO, pSummary, pDetail);
show();
}
public void showError(final String pHeader, final String pSummary, final String pDetail) {
setHeader(pHeader);
this.message = new FacesMessage(FacesMessage.SEVERITY_ERROR, pSummary, pDetail);
show();
}
public void updateDialog() {
RequestContext context = RequestContext.getCurrentInstance();
context.update("mainForm:messageDialogHeader");
}
private void show() {
updateDialog();
RequestContext context = RequestContext.getCurrentInstance();
context.execute("PF('wigVarMessageDialog').show();");
FacesContext.getCurrentInstance().addMessage(this.messageDialogId, this.message);
}
public String getMessageDialogId() {
return this.messageDialogId;
}
public void setHeader(final String pHeader) {
this.header = pHeader;
}
public String getHeader() {
return this.header;
}
public FacesMessage getLastMessage() {
return this.message;
}
}
Одно из сообщений, которые должны быть поручены:
this.messageDialogBean.showInfo("Title", "Summary", "Detail");
Задача:
Элемент p: messages в диалоговом окне не отображает сообщение, когда диалог открывается в первый раз. После открытия и скрытия, как только он показывает все дальнейшие FacesMessages просто отлично.
Вопрос:
До сих пор я использованияКонтактная открытие и один раз closeing диалог, когда интерфейс инициализируется как workarround. Разве annyone знает, что вызывает эту проблему в первую очередь, а также как ее правильно решить?
Спасибо за ответы
пытались ли вы изменить место ''?!? я на 100% уверен, что это проблема. –
У вас есть форма внутри формы? Я вижу, что вы обновляете mainForm: messageDialogHeader – Nikola
Вложенные формы не допускаются в текущих спецификациях HTML – thatsIch