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 :

probleme avec h:inputText disbaled


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Par défaut probleme avec h:inputText disbaled
    salut
    j'ai une page jsf contenant un datatable à remplir avec une liste
    la 2eme colonne contient un h:inputText.
    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
    <rich:dataTable value="#{ClientFactory.listAtt}" 
    					var="monClient" border="1">
    					<rich:column>
    						<f:facet name="header">
    							<f:verbatim>Nom</f:verbatim>
    						</f:facet>
    						<h:outputText value="#{monClient.nom}" />
    					</rich:column>
    					<rich:column>
    						<f:facet name="header">
    							<f:verbatim>valeur</f:verbatim>
    						</f:facet>
    						<h:inputText  disabled="#  value="#{monClient.adresse}" {ClientFactory.attReadOnly}" />
    					</rich:column>
    				</rich:dataTable>
    je veut ,selon le nom du client, rendre le champ(le <h:inputText value="#{monClient.adresse}") readonly ou readwrite.
    le probleme est que le champ adresse est soit readonly pour tous les client soit readwrite pour tous les clients aussi alors que j'attendais avoir quelques champs d'adresse readonly pour les clients désirés.
    comment faire?

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

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Le problème dans ton code, c'est que l'attribut attReadOnly est accédé au niveau du bean ClientFactory. De fait, la valeur retournée sera la même pour l'ensemble des éléments de la table.
    Il est donc nécessaire de déporter cet attribut au niveau de l'objet itéré, i.e. de pouvoir écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText value="#{monClient.adresse}" disabled="#{monClient.attReadOnly}"/>
    Une autre solution serait de passer à la méthode isAttReadOnly de ClientFactory le paramètre correspondant au client actuellement itéré. Mais c'est plus complexe, le langage EL étant peu flexible de ce côté là (à moins d'utiliser une librairie comme EL Functors ou JSF 2.0 ).
    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

  3. #3
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Par défaut
    merci mais j'avais une faute de frappe:en effet mon code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText value="#{monClient.adresse}" disabled="#{monClient.attReadOnly}"/>
    c.a.d comme vous m'avez suggerer mais j'ai toujours soit tous les champs readonly soit readwrite

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu défini comment ces propriété dans tes beans client? Parce que coté jsf, je vois plus d'erreur. Si tout est readonly ou tout readwrite, c'est que dans tes bean tes clients sont tous readonly ou tous readwrite.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Par défaut
    je ne pense pas que le probleme est avec les beans client.
    je fait une boucle sur la liste de clients et un test sur le nom du client pour mettre l'adresse readonly
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for(int i=0;i<n;i++)
    ...
     
    if(cl.getName.equals("test1"))
    					this.setAttReadOnly(false);
    				else
    					this.setAttReadOnly(true);
    list.add(monClient);
    le probleme est que si le dernier client s'appelle test1 alors tous les adresses sont readwrite sinon les adresses sont toutes readonly

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=0;i<n;i++)
    ...
     
    if(cl.getName.equals("test1"))
    					cl.setAttReadOnly(false);
    				else
    					cl.setAttReadOnly(true);
    list.add(cl);
    Ce serait plutot ceci le code correct. Forcément, si tu partage une variable globale dans la factory, elle aura la dernière valeur que tu lui aura donnée. C'est dans client que tu dois stocker la valeur readOnly!

  7. #7
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Par défaut
    merci mais toujuors meme probleme

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    montre ta nouvelle méthode et ton fichier jsf actuel.

Discussions similaires

  1. PROBLEME AVEC INPUTTEXT
    Par tongo dans le forum JSF
    Réponses: 2
    Dernier message: 30/07/2008, 09h58
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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