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 :

taille d'un champ selon dans la page JSF pour inputText


Sujet :

JSF Java

  1. #1
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut taille d'un champ selon dans la page JSF pour inputText
    Bonjour !

    Pour être plus précis, j'ai un formulaire des plus classiques où je veux formater la taille de mon inputtext par la propriété maxlength
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <h:form>
        <h:panelGrid columns="2">
            <h:column>
                <h:outputLabel for="newCode" value="Code :" />
            </h:column>
            <h:column>
                <h:inputText id="newCode" value="#{typeSpectaclesController.typeSpectacles.code}"
                             maxlength="4" />
            </h:column>
            <h:column>
                <h:outputLabel for="newLib" value="Libellé :" />
            </h:column>
            <h:column>
                <h:inputText id="newLib" value="#{typeSpectaclesController.typeSpectacles.libelle}"
                             maxlength="30" />
            </h:column>
        </h:panelGrid>
    </h:form>
    Par ailleurs, ces champs sont persistés en base de données avec JPA !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @Entity
    public class TypeSpectacles implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        @Id
        @Basic(optional = false)
        @Column(name = "Ttyp", nullable = false, length = 4)
        private String code;
        
        @Column(name = "Tnom", length = 30)
        private String libelle;
    
    }
    Du fait qu'on "connaisse" la taille du champ dans la base de données, et dans mon entité, peut-on récupérer la taille du champ dans mon formulaire ?



  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
    Par défaut
    quelle est la question alors?? le maxlength ne fonctionne pas bien ??

  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 : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Ce qu'il veut dire c'est qu'aujourd'hui, il répète 2 fois l'information. Une première fois dans l'annotation, l'autre fois dans la page XHTML.

    L'idée serait donc de mettre l'information du maxlength du JSF dans un bean Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText ... maxlength="#{monBean.maxLengthForXXX}"/>
    Après, comment coder ton getMaxLengthForXXX() ? Je vois 2 possibilités déjà :

    • Récupérer la valeur depuis l'annotation grâce à de la réflection. Je te déconseille fortement cette solution
    • Mettre l'information dans une constante, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface MaxLengthValues {
        int MAX_LENGTH_FOR_NEW_CODE = 4;
        ...
    }
    Puis dans le getter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public int getMaxLengthForNewCode() {
        return MaxLengthValues.MAX_LENGTH_FOR_NEW_CODE;
    }
    Et dans l'annotation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Column(name = "Ttyp", nullable = false, length = MaxLengthValues.MAX_LENGTH_FOR_NEW_CODE)
    private String code;
    Comme ça, si tu changes ta taille de champ, tu fais juste la modification dans l'interface.
    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 confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Ce qu'il veut dire c'est qu'aujourd'hui, il répète 2 fois l'information. Une première fois dans l'annotation, l'autre fois dans la page XHTML.
    Oui c'est ça !



    Citation Envoyé par romaintaz Voir le message
    [*]Récupérer la valeur depuis l'annotation grâce à de la réflection. Je te déconseille fortement cette solution
    Justement, (si j'ai bien compris), je trouvais ça pratique de récupérer la valeur depuis l'annotation...
    D'ailleurs comment j'aurais pu faire ?


    En tout cas merci pour ta réponse.

  5. #5
    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 : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Dans ton cas (j'ai fait au plus court, j'ai zappé les exceptions à catcher) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeSpectacles.class.getDeclaredField("code").getAnnotation(Column.class).length();
    Mais encore une fois : évite d'attaquer ça par réflection !!
    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

  6. #6
    Membre confirmé Avatar de kimausoleil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2004
    Messages : 126
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Mais encore une fois : évite d'attaquer ça par réflection !!
    Mais pourquoi ?


    En tout cas ça marche...

    Merci pour les 2 solutions !

  7. #7
    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 : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Pour des problèmes de performances, mais aussi de mémoire.
    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

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

Discussions similaires

  1. Récupérer un champ texte d'une page web pour l'insérer dans une autre
    Par Cubilot dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 02/06/2014, 10h08
  2. [MySQL] afficher un champ blob dans ma page
    Par hammag dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/04/2009, 12h04
  3. [AJAX] ajout / suppression champs ( dynamiquement ) dans une page web
    Par anwar1987 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/03/2009, 18h37
  4. champ recherche dans une page Web
    Par ALIAS200 dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 28/01/2008, 16h36

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