IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Nouvelle sévérité pour les FacesMessage


Sujet :

JSF Java

  1. #1
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut Nouvelle sévérité pour les FacesMessage
    Bonjour,

    J'ai vu que la classe FacesMessage.Severity ne permet que les niveaux INFO, WARN, ERROR et FATAL.
    Or, j'aimerais ajouter un nouveau niveau (appellons le DEBUG par exemple).

    Après avoir vu le code de la classe FacesMessage, je me rends compte que la seule solution pour moi c'était de surcharger toute la classe FacesMessage pour permettre la création de la nouvelle sévérité.

    Y a t'il selon vous d'autres possibilités ? Lesquelles ?

    Merci
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Effectivement à regarder les sources c'est bloqué par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        public void setSeverity(Severity severity)
        {
            if(severity.getOrdinal() < SEVERITY_INFO.getOrdinal() || severity.getOrdinal() > SEVERITY_FATAL.getOrdinal())
            {
                throw new IllegalArgumentException("" + severity);
            } else
            {
                this.severity = severity;
                return;
            }
        }
    Et comme la création des Severity est dans la classe FacesMessage, et qu'aucune méthode ne permet de modifier les Severity. C'est foutu :-). T'est bon pour redéfinir 2 / 3 trucs.

  3. #3
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    J'ai trouvé une solution moyennement élégante, mais qui fonctionne quand même.

    Au début, je voulais faire ma propre classe FacesMessage en copiant / collant tout le code, et en ajoutant ma nouvelle sévérité.
    "Seul problème", c'est que je ne peux pas faire ma propre classe Severity héritant de javax.faces.application.Severity, puisqu'il s'agit d'une Innerclass dont le seul constructeur est de portée private.

    Ma solution :
    J'ai crée une classe héritant de FacesMessage qui crée en fait une FacesMessage de sévérité INFO.
    Ensuite, dans mon code, je fais un test d'instance de la classe, histoire de savoir si mon FacesMessage est un "vrai" message INFO ou un "trafiqué".

    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    package mon.package;
     
    import javax.faces.application.FacesMessage;
     
    public class DebugFacesMessage extends FacesMessage {
     
        private static final long serialVersionUID = 7341378143207435977L;
     
        public DebugFacesMessage() {
            super();
            super.setSeverity(FacesMessage.SEVERITY_INFO);
        }
    }
    Puis dans mon code de traitement des messages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FacesMessage msg = context.getMessages().next();
    if (msg instanceof DebugFacesMessage) {
      // Traitement du message de sévérité DEBUG...
    } else {
      // Traitement des "vrais" FacesMessage.
    }
    Pour information, cela m'était nécessaire au sein d'un composant "surchargeant" le composant <h:messages/>. Du coup, j'ai la possibilité de faire afficher différemment un message de sévérité DEBUG d'un message de sévérité INFO.
    Sans cela, ma modification aurait été inutile, car pour JSF, mon DebugFacesMessage est considéré comme un FacesMessage de sévérité INFO.

    Donc une astuce limitée en somme (mais qui marche dans mon cas ).
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    De toute manière, les tags
    - h:message
    - h:messages

    Ne pourrai pas gérer correctement d'autre sévérités... étant donné qu'ils sont prévus que pour les 4 de base.

    Pense au tag résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/07/2010, 02h03
  2. Réponses: 0
    Dernier message: 10/08/2007, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo