2010-07-19 6 views
2

J'utilise un javacode ajax personnalisé qui effectue un traitement sur le serveur. Dans ce processus diverses erreurs peuvent se produire que j'ajoute au FacesContext via addMessage(). Je veux afficher ces messages dans le même <rich:messages> -tag que j'utilise pour mes erreurs de validation.Message d'erreur Rerender RichFaces après une requête ajax

Savez-vous un moyen d'afficher ces messages dans le <rich:messages> -tag après la fin de la requête ajax?

Mon idée initiale était d'ajouter <a4j:jsFunction name="richDisplayError" reRender="messages" /> au balisage et appelant richDisplayError lorsque la demande terminée, mais il semble que le groupe de messages est vide nouveau rendu.

Répondre

4

<rich:messages> a ajaxRendered défini sur true par défaut. Donc le problème est ailleurs. Peut-être:

  • vous redirigez, au lieu de l'expédition, et les messages sont perdus
  • vous n'êtes pas les messages réellement ajouterez (vérifier avec débogage)
  • vous avez différentes vues/manquant/subviews
+0

Je pense que ajaxRendered est inutile dans ce cas, puisque je fais l'appel ajax via le cadre de a4j, mais avec des fonctions personnalisées. Est-ce la raison, combien de temps vivent les messages? sont-ils perdus quand je tire un autre appel? –

+0

' Bozho

2

Par exemple, dans votre page:

<a4j:commandButton value="Action" 
      limitToList="true" 
      action="#{mybean.action}" 
      reRender="mymessages"> 
    </a4j:commandButton> 
    <a4j:outputPanel ajaxRendered="true"> 
     <h:messages id="mymessages" /> 
    </a4j:outputPanel> 

puis en vous haricot:

public void action(){       
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("hello world")); 
}  
0

Vous avez besoin de 3 choses:

1er: déclarer votre message d'erreur, dans le fichier "ressources \ \ \ paquet errorMessages.properties", comme ceci:

errorMsgToDisplay.errName = Your Error Message Here 

2nd: déclarez votre variable BUNDLE dans le code de la classe:

private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("/bundle/errorMessages"); 

3ème: Afficher le message (après une condition par exemple)

if (condition) { 
FacesContext.getCurrentInstance().addMessage("", new FacesMessage(FacesMessage.SEVERITY_ERROR, 
BUNDLE.getString("errorMsgToDisplay.errName"), 
BUNDLE.getString("errorMsgToDisplay.errName"))); 
} 
Questions connexes