2015-08-12 3 views
1

J'ai besoin de votre aide pour montrer un message d'erreur dans la boîte de dialogue. En cliquant sur le bouton de commande, aucun message n'apparaît dans la boîte de dialogue.Comment afficher les messages dans p: dialog?

Même si j'ai essayé d'afficher le message dans une boîte de dialogue, mais rien ne s'affiche sans erreur.

Alors, comment puis-je produire des messages dans une boîte de dialogue et non pas dans la forme principale

Voici le code de la page 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> 

Voici le code 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

Voulez-vous un bouton en dehors de la boîte de dialogue ?? Vous Xhtml est un peu confus! –

+0

@BalusC s'il vous plaît vérifier maintenant – 99maas

+0

@KishorP le bouton est à l'intérieur du dialogue – 99maas

Répondre

0

C'est parce que vous avez ajax=false au commandButton, donc, l'attribut update::Requests:messagePDFSTAR ne va pas fonctionner. Vous ne pouvez pas combiner ajax=false et update="...", l'attribut de mise à jour est uniquement pour les actions ajax.

Je comprends que vous avez besoin du ajax=false parce que le p:fileDownload fonctionne avec cela, mais peut-être que vous pouvez essayer un autre moyen d'afficher le message que vous voulez.

Je fais face à cette situation une fois et utilise une solution de contournement, dans p:dialog vous pouvez utiliser un p:messages et 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> 

J'espère que cela va vous aider.

Edit:

RequestContext.getCurrentInstance().showMessageInDialog(message); 

Il montre le message dans une nouvelle boîte de dialogue, mais je pense que ce n'est pas ce que vous voulez. Vous voulez afficher le message dans le même dialogue que le commandButton et le fileDownLoad.

Ajax and update not working correctly

+0

Je vais essayer cela et je reviendrai – 99maas

+0

Malheureusement, cela n'a pas fonctionné – 99maas