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 :

[JSF] Initialiser la première valeur SelectoneListBox à null.


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut [JSF] Initialiser la première valeur SelectoneListBox à null.
    Bonjour j'ai une petite question d'ordre technique.
    En effet je désire créer un nouvel élément dans ma base pour cela je fais remplir un formulaire avec quelques éléments "selectonelistbox" et j'ai un petit problème. En effet je voudrais que l'attribut ("value" de mon "selectonlistbox") soit toujours à "null" tant que l'on a pas sélectionné une valeur dans mon "slelectonelistbox" car dans mon cas il possède tous de suite la valeur correspondante au premier élément de mon "selectitems". Je voudrais donc initialiser mes "selectonelistebox" à une valeur par défaut :"null" comme cela je pourrais utiliser des "required".
    Merci de votre réponse.

  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
    Alors quel est le problème? tu n'es pas obligé d'initialiser la valeur du select, par défaut c'est null.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    En fait j'utilise un factory pour mon selectitems. Sur ma page web le premier champ de mon selectonelistbox correspond à mon premier élément de ma liste, or quand je commence à remplir mon formulaire et que je l'enregistre sans avoir touché à mon selectonlistebox normalement il ne devrait pas enregistré et il devrais me sortir un message d'erreur puisque j'ai mis une required=true. Mais le problème c'est qu'il enregistre et je me rend compte que au chargement de ma page il met directement value de mon selectonlistebox à la valeur du premier élémént de la liste alors que j'initialise bien ma value à null au tous début. Donc voilà pourquoi je désire mettre null au début.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h:selectOneListbox value="#{CreateAdressageIPMat.lanAddress}" size="0" required="true"  >
    	<f:validator validatorId="notNullAdressageip" />
    <f:selectItems value="#{listeValeurCentres}"/>
    </h:selectOneListbox>

  4. #4
    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
    Citation Envoyé par Razielback Voir le message
    En fait j'utilise un factory pour mon selectitems. Sur ma page web le premier champ de mon selectonelistbox correspond à mon premier élément de ma liste,
    Si la valeur correspond au premier élément de la liste, c'est normal que le validator ne bloque pas l'envoi du formulaire, si la permiere valeurs des selectItems est null, pourquoi l'ajouter.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    Euh... Je veux que mon validator bloque mais il ne le fait pas et je ne sais pas comment faire d'où mon idée de maintenir ma value (attribut de ma classe java) à null ou de faire en sorte que mon selectitem pointe sur null pour que ma value pointe sur null maintenant si vous avez une autre idée bien meilleur je veux bien vous écouter.

  6. #6
    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
    garder la valeur par défaut null et ne pas avoir une valeur null dans la liste des selectItems, la validation par required va fonctionner.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    Désolé mais ça ne marche pas à l'initialisation de ma classe l'attribut qui correspond à value dans mon selectonlistbox est null par contre juste avant que je persist il prend la valeur que mon selectonelistbox montre, or je n'ai rien touché du coup il passe le validator. Dans ma liste de selectemitem il n'y a pas un null.

  8. #8
    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
    montre ton code..

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    Classe pour ma page
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    @Name("CreateAdressageIPMat")
    @Scope(ScopeType.SESSION)
    public class CreateIPAdressMat {
     
    	@In
    	EntityManager entityManager;
     
    	@In(required = false)
    	@Out(required = false)
    	Adressageip newAdressageip;
     
    	private int page;
    	private String idOrg;
    	private String lanAddress;
     
    	@Begin(join = true)
    	public String createAdressageIPMat(int page){
    		this.page=page;
    		init();
      		System.out.println("adresseip :"+lanAddress);
      		System.out.println("idOrg:"+idOrg);
    		return "/createAdressageIPMat.xhtml";
    	}
     
     
    	public void init() {
     
    		newAdressageip = new Adressageip();
    	}
     
    	public String newAdressageIPMat() {
     
    		String requestIdOrg ="select org from Organisme org where idorg = '"+idOrg+"'";
    		Organisme org = (Organisme) entityManager.createQuery(requestIdOrg).getSingleResult();
    		newAdressageip.setOrganisme(org);
      		String request = "select Cent from Centre cent where adresselan = '"+lanAddress+"'";
      		Centre centre = (Centre) entityManager.createQuery(request).getSingleResult();
      		newAdressageip.setCentre(centre);
     
      		System.out.println("adresseip :"+newAdressageip.getCentre().getAdresselan());
      		System.out.println("idOrg:"+newAdressageip.getOrganisme().getIdorg());
      		System.out.println("adresseip :"+lanAddress);
      		System.out.println("idOrg:"+idOrg);
      		newAdressageip.setMateriel("1");
    		idOrg=null;
    		lanAddress=null;
    		entityManager.persist(newAdressageip);
     
    		return redirect();					
    		}
     
    	@End
    	public String redirect() {
    		switch(this.page) {
    		case 1:
    			return "/TableFiltreListeCentre.xhtml";
     
    		case 2:
    			return "/VoirAdresseip.xhtml";
     
    		case 3:
    			return "/TableFiltreListeCentre.xhtml";
    		default:
    			return "/TableFiltreListeCentre.xhtml";
    		}
    	}
    Page

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     	<h:form>
    	<rich:panel>
    		<f:facet name="header">
    Libelle
            </f:facet>
    		<h:inputTextarea value="#{CreateAdressageIPMat.newAdressageip.libelle}" />
    	</rich:panel>
    			<rich:panel>
    		<f:facet name="header">
    Adresse Ip
            </f:facet>
    		<h:inputTextarea value="#{CreateAdressageIPMat.newAdressageip.adresseip}" required="true" />
    	</rich:panel>
     
    			<rich:panel>
    <f:facet name="header">
    AdresseLan
    </f:facet>
    <h:selectOneListbox value="#{CreateAdressageIPMat.lanAddress}" size="0" required="true"  >
    <f:selectItems value="#{listeValeurCentres}"/>
    </h:selectOneListbox>
      </rich:panel>	
    <br/>
    	<rich:panel>
    		<f:facet name="header">
    AdresseMac
            </f:facet>
    		<h:inputTextarea value="#{CreateAdressageIPMat.newAdressageip.adressemac}" />
    	</rich:panel>
    			<rich:panel>
                  </rich:panel>	
    		<rich:panel>
    		<f:facet name="header">
    Num Inventaire
            </f:facet>
    		<h:inputTextarea value="#{CreateAdressageIPMat.newAdressageip.inventaire}" />
    	</rich:panel>
     
    		<rich:panel>
    		<f:facet name="header">
    Nom Machine
            </f:facet>
    		<h:inputTextarea value="#{CreateAdressageIPMat.newAdressageip.nom}" />
    	</rich:panel>
     
    		<rich:panel>
    		<f:facet name="header">
    Num Série
            </f:facet>
    		<h:inputTextarea value="#{CreateAdressageIPMat.newAdressageip.numserie}" />
    	</rich:panel>
    	<br/>
    	<rich:panel>
    <f:facet name="header">
    Id Organisme
    </f:facet>
    <h:selectOneListbox value="#{CreateAdressageIPMat.idOrg}" size="0" required="true">
    <f:selectItems value="#{listOrganismeValues}"/>
    </h:selectOneListbox>
     
      <br/>
                    </rich:panel>				
        	<center>
    		   <h:commandButton value="enregistrer" action="#{CreateAdressageIPMat.newAdressageIPMat}" styleClass="boutonbleuciel" onmouseover="this.style.border='inset 2px #cccccc'" onmouseout="this.style.border='outset 2px #cccccc'"/>
    		</center>
     
    		</h:form>
    </ui:define>
    	</ui:composition>
    Selectitem
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    @Name("SelectLists")
    	@Scope(ScopeType.SESSION)
    	public class SelectLists {
     
    		@In
    		private EntityManager entityManager;
     
    		private List<Centre> listeCentres = new ArrayList<Centre>();
    		private List<Organisme> listOrganisme = new ArrayList<Organisme>();
     
    		@Out(required=false)
    	    private ArrayList<SelectItem> listeValeurCentres ;
     
    		@Out(required=false)
    	    private ArrayList<SelectItem> listOrganismeValues ;
     
     
     
    		@Factory("listeValeurCentres")
    		public void ChargelisteValeurCentre(){
     
    			    String requete = "select cent from Centre cent order by cent.adresselan asc";
    				this.listeCentres = entityManager.createQuery(requete).getResultList();
     
    				for (int i=0;i <listeCentres.size();i++){
    					if(listeValeurCentres == null)
    						listeValeurCentres  = new ArrayList<SelectItem>();
    						String np=listeCentres.get(i).getAdresselan()+" "+listeCentres.get(i).getNomcentre();
    						SelectItem item = new SelectItem(listeCentres.get(i).getAdresselan(), np );
    						listeValeurCentres.add(item);
    		       }     
    		} 
     
    		@Factory("listOrganismeValues")
    		public void LoadListOrganismeValues(){
     
    			    String requete = "select org from Organisme org order by org.idorg asc";
    				this.listOrganisme = entityManager.createQuery(requete).getResultList();
     
    				for (int i=0;i <listOrganisme.size();i++){
    					if(listOrganismeValues == null)
    						listOrganismeValues  = new ArrayList<SelectItem>();
    						String np=listOrganisme.get(i).getIdorg()+" "+listOrganisme.get(i).getLibelleorg();
    						SelectItem item = new SelectItem(listOrganisme.get(i).getIdorg(), np );
    						listOrganismeValues.add(item);
    		       }     
    		}

  10. #10
    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
    utilise un seul form dans la page, que veut la valeur du selectOneMenu lorsque tu envoie le formulaire?? ça ne doit pas être null, sinon le validator required bloque le processus.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    La valeur du selectonemenu quand j'envois le formulaire alors que je n'y ai pas touché est la valeur tu premier élément de ma selectlisitem. Il la charge automatiquement alors que je ne veux pas. Je veux que tant qu'on ai pas choisi soit même dans les selectonlist cela ne puisse pas être valider or c'est le cas car même si je ne fait rien il place cette valeur dans mon selectonelistebox. Je crois bien avoir déclaré un seul form.

  12. #12
    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
    la première valeur de ton selectItem est null?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    Nan justement et c'est cette valeur qui est renvoyer directement dans value sans que j'agisse sur mon selectonelistbox. Donc le required ne marche pas.

  14. #14
    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
    tu as le code html généré, juste du selectOneMenu.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    Je sais pas si c'est ça que tu veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div class="dr-pnl-b rich-panel-body " id="j_id110:j_id117_body"><select name="j_id110:j_id119" size="0">	<option value="10.0.101.100">10.0.101.100 VLAN25 ; 254</option>
    	<option value="10.0.103.100">10.0.103.100 VLAN25; 250</option>
    	<option value="10.0.109.100">10.0.109.100 VLAN27 ; 254</option>
     
    	<option value="10.0.111.100">10.0.111.100 VLAN27; 250</option>
    	<option value="10.0.117.100">10.0.117.100 VLAN29 ; 254</option>
    ....
    .....
    </select></div></div>

  16. #16
    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

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    Merci ça marche maintenant j'ai la liste déroulante complète ce qui est un peu embétant, est ce que tu pourrais m'expliquer pk le size est la cause de mon problème. Je vais chercher à résoudre se petit problème d'affichage.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    J'ai fait quelque test et en fait c'est assez vicieux, si on laisse size =1 ou 0 le selectonelistbox affiche une valeur et cette valeur sera présélectionner dans les attributs. Par contre si vous mettez au moins 2 valeurs à afficher dans le selectonlistbox alors il ne choisira pas de valeur par défaut et vous serez donc obligé de choisir.

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

Discussions similaires

  1. [XL-2010] Renvoyer la première et la dernière valeur non nulles d'une colonne
    Par Maude_84 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/03/2015, 12h12
  2. jsf :formulaire retournant des valeurs null
    Par lolidj dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 18/04/2012, 10h38
  3. Calcul Stock Actuel mm lorsqu'une valeur est null
    Par priest69 dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2005, 18h58
  4. [XSL -PHP] Test si vide... et première valeur inférieure
    Par mamat- dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 06/08/2005, 18h57
  5. Problème de "select" avec des valeurs a null
    Par SchpatziBreizh dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/07/2005, 16h08

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