Sto lavorando con JSF 2.0, JBoss 7.1.1 Finale e ho il seguente problema con selectOneMenu. Voglio essere in grado di impostare un campo in un bean gestito su true/false/null. Così, ho creato seguente selectOneMenu:h: selectOneMenu con elementi booleani non funziona con valore nullo
<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
<f:selectItem itemValue="#{null}" itemLabel="Any.." />
<f:selectItem itemValue="true" itemLabel="Yes"/>
<f:selectItem itemValue="false" itemLabel="No"/>
</h:selectOneMenu>
Ora, se scelgo di 'Qualsiasi ..', si assegna "false" per il campo registrationComplete (che è booleano). Quindi il valore viene interpretato come falso. Ho anche cercato di utilizzare i valori booleani nella selectItem (s), vale a dire:
<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
<f:selectItem itemValue="#{null}" itemLabel="Any.." />
<f:selectItem itemValue="#{true}" itemLabel="Yes"/>
<f:selectItem itemValue="#{false}" itemLabel="No"/>
</h:selectOneMenu>
E ho anche convertitore in faces-config registrati come segue:
<converter>
<converter-id>booleanConverter</converter-id>
<converter-class>javax.faces.convert.BooleanConverter</converter-class>
</converter>
e ha cercato di usarlo:
<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
<f:selectItem itemValue="#{null}" itemLabel="Any.." />
<f:selectItem itemValue="true" itemLabel="Yes"/>
<f:selectItem itemValue="false" itemLabel="No"/>
<f:converter converterId="booleanConverter"/>
</h:selectOneMenu>
Ma tutti questi tentativi hanno comportato lo stesso comportamento - quando il valore nullo è stato selezionato, è stato interpretato come falso.
Ho eseguito il debug e nella traccia dello stack ho trovato il luogo in cui si verifica. In AstValue.setValue(EvaluationContext, Object) line: 204
chiama
ELSupport.coerceToType(value, targetClass)
parametro valore è nullo e targetClass è booleana. Questo metodo coerceToType restituisce quindi false.
Qualche idea su come risolvere questo problema? Grazie!
Qual è la firma del metodo() setRegistrationComplete? Qual è il tipo di argomento? Booleano o booleano? – prageeth
@prageeth: OP ha dichiarato chiaramente 'Boolean'. – BalusC
@prageeth è vuoto pubblico setRegistrationComplete (Boolean registrationComplete). E la registrazione del campo Completa è Boolean – lukas