2015-08-12 2 views
1

Мне нужна ваша помощь в показе сообщения об ошибке в диалоговом окне. Нажав кнопку commandButton, в диалоговом окне не отображается сообщение.Как показывать сообщения в p: dialog?

Хотя я попытался показать сообщение в диалоговом окне, но ничего не отображается без какой-либо ошибки.

Так как я могу производить сообщения в диалоге, а не в основной форме

Вот код JSF страницы:

<h:form id="Requests"> 
    <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true"/> 

    <p:dialog id="c1" header="C1" widgetVar="c1"> 
     <p:message id="messagePDFSTAR" 
        for=":Requests:DownloadPDFSTAR" 
        showDetail="true" /> 
     <p:commandButton id="DownloadPDFSTAR" 
         value="Download" 
         ajax="false" 
         actionListener="#{hrd.PDFSTAR}" 
         update=":Requests:messagePDFSTAR" > 

      <p:fileDownload value="#{hrd.fileSTAR}" /> 
     </p:commandButton> 
    </p:dialog> 
</h:form> 

Вот код Java Bean:

public void PDFSTAR() { 

    try { 
     FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Ref is Null", "Ref is Null"); 
     RequestContext.getCurrentInstance().showMessageInDialog(message); 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Fatal!", "System Error")); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Вы хотите использовать кнопку за пределами диалога? Вы Xhtml немного запутанны! –

+0

@BalusC пожалуйста, проверьте сейчас – 99maas

+0

@ KishorP кнопка находится в диалоге – 99maas

ответ

0

Это потому, что у вас есть ajax=false в commandButton, поэтому атрибут update::Requests:messagePDFSTAR не будет работать. Вы не можете комбинировать ajax=false и update="...", атрибут обновления предназначен только для действий ajax.

Я понимаю, что вам нужен ajax=false, потому что p:fileDownload работает с этим, но, возможно, вы можете попробовать другой способ отображения требуемого сообщения.

Я занимаюсь этой ситуацией один раз и использую обходное решение, в p:dialog вы можете использовать p:messages и autoUpdate=true.

<h:form id="Requests"> 
    <p:messages id="messages" showDetail="true" autoUpdate="true" closable="true"/> 

    <p:dialog id="c1" header="C1" widgetVar="c1"> 
     <p:messages id="messagesPDFSTAR" 
        autoUpdate="true" 
        showDetail="true" /> 
     <p:commandButton id="DownloadPDFSTAR" 
         value="Download" 
         ajax="false" 
         actionListener="#{hrd.PDFSTAR}" > 

      <p:fileDownload value="#{hrd.fileSTAR}" /> 
     </p:commandButton> 
    </p:dialog> 
</h:form> 

Я надеюсь, что это вам поможет.

Edit:

RequestContext.getCurrentInstance().showMessageInDialog(message); 

Он показывает сообщение в новом окне, но я думаю, что это не то, что вы хотите. Вы хотите показать сообщение в том же диалоговом окне commandButton и fileDownLoad.

Ajax and update not working correctly

+0

Я попробую это, и я вернусь – 99maas

+0

К сожалению, это не сработало – 99maas

Смежные вопросы