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 :

selectItems et conversion automatique


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 172
    Par défaut selectItems et conversion automatique
    Bonjour,

    je rencontre un problème de conversion assez gênant.
    J'ai une datatable (rich:datatable) avec des filtres sur certaines colonnes :
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     	<rich:dataTable id="applicationsRegionaleDataTable" 
    					binding="#{suiviApplicationsBackingBean.dataTable}" 
    					value="#{suiviApplicationsBackingBean.rubriquesRegionales}"
    					var="varRubriqueRegionale"
    					width="100%"
    					rows="20"
    					rendered="#{not empty suiviApplicationsBackingBean.rubriquesRegionales}" 
    					>
    		 <f:facet name="header" >
    	         <rich:columnGroup>
    	             <rich:column>
    	                 <h:outputText value="Nom de l'outil" />
    	             </rich:column>
    	             <rich:column>
    	                 <h:outputText value="Région(s)" />
    	             </rich:column>
    	             <rich:column>
    	                 <h:outputText value="Domaine" />
    	             </rich:column>
    	             <rich:column>
    	                 <h:outputText value="Rubrique" />
    	             </rich:column>
    	             <rich:column>
    	                 <h:outputText value="Consultable" />
    	             </rich:column>
    	             <rich:column>
    	                 <h:outputText value="Type d'accès" />
    	             </rich:column>
    	             <rich:column>
    	                 <h:outputText value="Déploiement" />
    	             </rich:column>
    	         </rich:columnGroup>
    	     </f:facet>
    		<rich:column>
    			<f:facet name="header">
     
    			</f:facet>
    			<h:outputText value="#{varRubriqueRegionale.application.libelle}"></h:outputText>
    		</rich:column>
    		<rich:column filterExpression="#{((suiviApplicationsBackingBean.filterRegion == null) || (suiviApplicationsBackingBean.filterRegion == '') || (varRubriqueRegionale.region.code==suiviApplicationsBackingBean.filterRegion))}">
    			<f:facet name="header">
     
    				<h:selectOneMenu value="#{suiviApplicationsBackingBean.filterRegion}" id="selectRegions">
    					<f:selectItems value="#{suiviApplicationsBackingBean.filterRegions}" />
    					<a4j:support event="onchange" reRender="rubriquesRegionaleDataTable, ds1" oncomplete="hideDiv()" onsubmit="showDiv()" />
    				</h:selectOneMenu>
     
    			</f:facet>		
    			<h:outputText value="#{varRubriqueRegionale.region.libelle}"></h:outputText>
    		</rich:column>
    		<rich:column filterExpression="#{((suiviApplicationsBackingBean.filterDomaine == null) || (suiviApplicationsBackingBean.filterDomaine == '') || (varRubriqueRegionale.rubriqueDomaine.rubriqueId==suiviApplicationsBackingBean.filterDomaine))}">
    			<f:facet name="header">
    				<h:selectOneMenu value="#{suiviApplicationsBackingBean.filterDomaine}" id="selectDomaines">
    					<f:selectItems value="#{suiviApplicationsBackingBean.filterDomaines}" />
    					<a4j:support event="onchange" reRender="rubriquesRegionaleDataTable, ds1" oncomplete="hideDiv()" onsubmit="showDiv()" />
    				</h:selectOneMenu>
    			</f:facet>	
    			<h:outputText value="#{varRubriqueRegionale.rubriqueDomaine.libelle}"></h:outputText>
    		</rich:column>
    		<rich:column style="text-align: center;">
    			<f:facet name="header">
     
    			</f:facet>		
    			<h:outputText value="#{varRubriqueRegionale.chemin}"></h:outputText>
    		</rich:column>
    		<rich:column style="text-align: center;" filterExpression="#{(suiviApplicationsBackingBean.filterConsultable == null) || (suiviApplicationsBackingBean.filterConsultable == '') || (varRubriqueRegionale.consultable==suiviApplicationsBackingBean.filterConsultable)}" >
    			<f:facet name="header">
     
    				<h:selectOneMenu value="#{suiviApplicationsBackingBean.filterConsultable}" id="selectConsultable">
    					<f:selectItems value="#{suiviApplicationsBackingBean.filterConsultables}" />
    					<a4j:support event="onchange" reRender="rubriquesRegionaleDataTable, ds1" oncomplete="hideDiv()" onsubmit="showDiv()"/>
    				</h:selectOneMenu>
     
    			</f:facet>	
    			<h:outputText value="#{varRubriqueRegionale.consultable}"></h:outputText>
    		</rich:column>	
    		<rich:column style="text-align: center;" filterExpression="#{(suiviApplicationsBackingBean.filterTypeAcces == null) || (suiviApplicationsBackingBean.filterTypeAcces == '') || (varRubriqueRegionale.acces == suiviApplicationsBackingBean.filterTypeAcces)}" >
    			<f:facet name="header">
    				<h:selectOneMenu value="#{suiviApplicationsBackingBean.filterTypeAcces}" id="selecttypeAccess">
    					<f:selectItems value="#{suiviApplicationsBackingBean.filterTypeAccess}" />
    					<a4j:support event="onchange" reRender="rubriquesRegionaleDataTable, ds1" oncomplete="hideDiv()" onsubmit="showDiv()"/>
    				</h:selectOneMenu>
    			</f:facet>	
    			<h:outputText value="#{varRubriqueRegionale.acces}" converter="fr.su.unv.asu.egeri.ihm.converter.TypeAccesConverter"></h:outputText>
    		</rich:column >
    		<rich:column style="text-align: center;" filterExpression="#{(suiviApplicationsBackingBean.filterDeploiement == null) || (suiviApplicationsBackingBean.filterDeploiement == '') || (varRubriqueRegionale.accesTotal == suiviApplicationsBackingBean.filterDeploiement)}" >
    			<f:facet name="header">
    				<h:selectOneMenu value="#{suiviApplicationsBackingBean.filterDeploiement}" id="selectDeploiement">
    					<f:selectItems value="#{suiviApplicationsBackingBean.filterDeploiements}" />
    					<a4j:support event="onchange" reRender="rubriquesRegionaleDataTable, ds1" oncomplete="hideDiv()" onsubmit="showDiv()"/>
    				</h:selectOneMenu>
    			</f:facet>	
    			<h:outputText value="#{varRubriqueRegionale.magasinsAutorisesList}" converter="fr.su.unv.asu.egeri.ihm.converter.AccesListConverter"></h:outputText>
    		</rich:column>			
     
    	</rich:dataTable>
    Le selectItems du select "selectConsultable" contient une liste de Boolean, initialisés ainsi :
    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
    			SelectItem selectItem = new SelectItem();
     
    			selectItem.setLabel("Tous");
    			selectItem.setValue(null);
    			filterConsultables.add(selectItem);
     
    			selectItem = new SelectItem();
    			selectItem.setLabel("oui");
    			selectItem.setValue(true);
    			filterConsultables.add(selectItem);
     
    			selectItem = new SelectItem();
    			selectItem.setLabel("non");
    			selectItem.setValue(false);
    			filterConsultables.add(selectItem);
    Au premier affichage du tableau tout va bien. Par contre si je change un filtre, par exemple je sélectionne une valeur sur le filtre selectRegions, lorsque je reviens sur ma page, l'item sélectionné dans le filtre "selectConsultable" est "non" (donc la valeur correspondant à false).

    Le code HTML correspondant à la selectbox "selectConsultable" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <SELECT id=subview_mainpanel:formsuiviApplications:applicationsRegionaleDataTable:selectConsultable onchange="showDiv();A4J.AJAX.Submit('j_id_jsp_1121791624_0','subview_mainpanel:formsuiviApplications',event,{'parameters':{'subview_mainpanel:formsuiviApplications:applicationsRegionaleDataTable:j_id_jsp_1038330611_48pc5':'subview_mainpanel:formsuiviApplications:applicationsRegionaleDataTable:j_id_jsp_1038330611_48pc5'} ,'actionUrl':'/egeri/egeri/index.jsf','oncomplete':function(request,event,data){hideDiv()}} )" size=1 name=subview_mainpanel:formsuiviApplications:applicationsRegionaleDataTable:selectConsultable> 
    <OPTION value="">Tous</OPTION> 
    <OPTION value=true>oui</OPTION> 
    <OPTION selected value=false>non</OPTION>
    </SELECT>
    Au lieu de garder la valeur null, il affecte false à la valeur sélectionnée. Comme si il faisait une conversion automatique et que si la valeur est une chaine vide, il la met à false.

    J'ai le même problème avec des Integer : si la valeur est celle défaut, il met 0 au lieu de laisser null.

    Est-ce un comportement normal ? Est-il possible de lui préciser de ne pas faire de conversion ?

  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
    C'est normal;
    la valeur par défaut d'un int est 0 et celle d'un boolean est false.

Discussions similaires

  1. Conversion automatique md5
    Par jcaspar dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 05/09/2007, 17h03
  2. Conversion automatique de documents en pdf : quels outils libres?
    Par tanita-twist dans le forum Autres langages
    Réponses: 3
    Dernier message: 11/01/2007, 21h22
  3. Conversion automatique d'une série de fichiers
    Par Sinon dans le forum Linux
    Réponses: 8
    Dernier message: 05/12/2006, 16h16
  4. [D7][InterBase] conversion automatique de date
    Par Magnus dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 14h58
  5. Conversion automatique de tiffs en jpg/gif
    Par Davenico dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/07/2003, 15h07

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