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 :

Converter JSF et Validator Hibernate Seam


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 28
    Points
    28
    Par défaut Converter JSF et Validator Hibernate Seam
    Bonjour !

    J'ai une question concernant le validator hibernate et le converter de JSF. Je travaille sous JSF et Seam.
    Je vous expose la situation simplement :

    J'ai une classe de persistence EJB3 quit suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @javax.persistence.MappedSuperclass
    public abstract class VehiculeEntity implements java.io.Serializable
    {
      @org.hibernate.validator.Length(max=35)
      @javax.persistence.Column(name="immatriculation", nullable=true, unique=false, insertable=true, updatable=true)
      private java.lang.String immatriculation ;
    ...
      @javax.persistence.Column(name="puissance_fiscale", nullable=true, precision=11, scale=0, unique=false, insertable=true, updatable=true)
      private java.lang.Integer puissanceFiscale ;
    ...
    }
    J'ai ensuite une page xhtml du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            <s:decorate id="immatriculation" template="../layout/edit.xhtml" styleClass="inline">
              <ui:define name="input">
                  <h:inputText value="#{vehiculeCourant.immatriculation}" readonly="#{EcranVehicule.modeLecture}"/>
                </ui:define>
            </s:decorate>
     
    ...
     
            <s:decorate id="puissanceFiscale" template="../layout/edit.xhtml" styleClass="inline">
              <ui:define name="input">
                <h:inputText value="#{vehiculeCourant.puissanceFiscale}"  readonly="#{EcranVehicule.modeLecture}" />
              </ui:define>
            </s:decorate>
    Mon messages_fr.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    validator.length      = la longueur doit être comprise entre {min} et {max}
    ...
    javax.faces.converter.IntegerConverter.INTEGER              = la valeur doit être un nombre
    Donc quand je valide mon formulaire, la classe javax.faces.convert.IntegerConverter est appelée pour mon champs puissanceFiscale et la classe org.hibernate.validator.LengthValidator est appelée pour mon champs immatriculation.
    J'obtiens le message d'erreur 'la valeur doit etre un nombre' si j'ai tappé autre chose qu'un nombre pour le champs puissanceFiscale et le message 'la longueur doit être comprise entre X et Y' si j'ai tappé une valeur ayant une longueur supérieure à 35.
    Bref, jusque là no soucis.

    Maintenant : j'aimerai personnaliser ces 2 messages.
    J'aimerai juste ajouter devant chaque message le libellé du champs concerné du type :
    'Puissance Fiscale : la valeur doit être un nombre'
    'Immatriculation : la longueur doit être comprise entre X et Y'

    Je vois plusieurs façons de le faire :

    1ère solution :
    Modifier mon .properties pour y ajouter un paramètre dans les messages.
    -> Je ne peux malheureusement pas, ces messages sont utilisés partout dans l'application et doivent rester tels quels (exception pour l'écran concerné ici)

    2ème solution :
    ajouter les attributs convertMessage="Puissance Fiscale : blabla" et validatorMessage="Immatriculation : la longueur blabla".
    Ca fonctionne mais si jamais j'ai des champs avec plusieurs annotations de validations hibernate, je suis coincé.
    Cette solution est assez limitée du coup.

    3ème solution :
    Créer un custom converter IntegerValueConverter par exemple et un custom validator VehiculeLengthValidator par exemple, et y faire appel sur les champs voulus.
    -> Recoder les méthodes de validation alors qu'elles existent déjà ça le fait moyen. J'aimerai éviter cette solution si possible.


    Donc voilà, que me reste-il ? Y a t-il un moyen de surcharger ces messages sans utiliser une des méthodes citées ci-dessus ?

    Merci de m'éclairer si possible !

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par mastamx Voir le message
    1ère solution :
    Modifier mon .properties pour y ajouter un paramètre dans les messages.
    -> Je ne peux malheureusement pas, ces messages sont utilisés partout dans l'application et doivent rester tels quels (exception pour l'écran concerné ici)
    qu'est ce qui change par rapport aux autres composants?
    tu peux utiliser des paramètres.
    tu peux le faire coté java en ajoutant ton propre message dans une fonction utiliser en tant que converter, mais, je trouve ça lourd ..

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Par rapport aux autres composants, ce qui change est que je ne dois pas afficher le nom du champs avant le message d'erreur. Donc ne pas modifier le .properties.

    Par 'utiliser des paramètres', tu veux dire quoi ?

    Pour le côté java, j'y avais pensé mais trop lourd aussi.

    N'y a t-il pas un moyen avec seam de créer une sorte de super converter ou super validator qui encapsulerait les autres afin d'y personnaliser les messages ?

Discussions similaires

  1. Réponses: 12
    Dernier message: 29/04/2015, 15h17
  2. Application JSF + Richfaces + Spring + Hibernate + JBoss
    Par gotteserbin dans le forum Wildfly/JBoss
    Réponses: 38
    Dernier message: 19/08/2012, 14h05
  3. Réponses: 10
    Dernier message: 17/05/2011, 12h12
  4. Réponses: 4
    Dernier message: 10/09/2006, 10h49

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