Une autre approche, vous pouvez utiliser FacesMessage
ici que vous ajoutez au contexte à l'aide FacesContext#addMessage()
. FacesMessages est basé sur une requête et est probablement plus adapté à l'exigence fonctionnelle particulière qu'une approche de messagerie personnalisée.
Voici un exemple de la méthode d'action de haricot:
public void sendMail() {
FacesMessage message;
try {
Mailer.send(from, to, subject, message);
message = new FacesMessage("Mail successfully sent!");
} catch (MailException e) {
message = new FacesMessage("Sending mail failed!");
logger.error("Sending mail failed!", e); // Yes, you need to know about it as well! ;)
}
FacesContext.getCurrentInstance().addMessage(null, message);
}
Avec un null
clientId le message devient « global », de sorte que vous pouvez utiliser la construction suivante pour afficher seulement messages globaux:
<h:messages globalOnly="true" />
Mise à jour: pour avoir le message de réussite et d'erreur affiché dans un style différent, jouer avec le FacesMessage.Severity
:
message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Mail successfully sent!", null);
} catch (MailException e) {
message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Sending mail failed!", null);
.. en combinaison avec infoClass/infoStyle
et errorClass/errorStyle
dans h:messages
:
<h:messages globalOnly="true" infoStyle="color:green" errorStyle="color:red" />
Demande scope données qui appartiennent au périmètre de la requête. Les données de portée de session appartiennent à la portée de session. Cela ne peut pas être plus clair/évident. En d'autres termes: refactor. – BalusC
Je dois envoyer par mail les données de la portée de la session (je ne peux pas les mettre dans la portée de la requête). Mais le message de résultat devrait être dans la portée de la demande (parce que je veux le voir seulement une fois juste après l'envoi du courrier). Que puis-je refactoriser? – Roman
Je me rends compte, si c'est ** seulement ** la messagerie, alors vous pouvez simplement saisir 'FacesMessage'. Vois ma réponse. – BalusC