Ich arbeite mit JSF 2.0, JBoss 7.1.1 Final und ich habe folgendes Problem mit selectOneMenu. Ich möchte in der Lage sein, ein Feld in einer verwalteten Bean auf true/false/null zu setzen. So habe ich folgende selectOneMenu erstellt:h: selectOneMenu mit booleschen Elementen funktioniert nicht mit Nullwert
<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>
Jetzt, Wenn ich wählen ‚Beliebige ..‘ zu, wird es „falsch“ auf die registrationComplete Feld zuordnen (die Boolean). So wird null als falsch interpretiert. Ich habe auch versucht Boolesche Werte in der selectItem (s) zu verwenden, das heißt:
<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>
Und ich auch Konverter in Gesichter-config registriert wie folgt:
<converter>
<converter-id>booleanConverter</converter-id>
<converter-class>javax.faces.convert.BooleanConverter</converter-class>
</converter>
und versuchte, es zu benutzen:
Aber alle diese Versuche führten zum gleichen Verhalten - , wenn der Nullwert ausgewählt wurde, wurde es als falsch interpretiert.
Ich debuggte es und in der Stack-Trace fand ich den Ort, wo es passiert. In AstValue.setValue(EvaluationContext, Object) line: 204
es nennt
ELSupport.coerceToType(value, targetClass)
Wert Parameter ist null und target ist Boolean. Diese coerceToType-Methode gibt dann false zurück.
Irgendwelche Ideen, wie man dieses Problem löst? Vielen Dank!
Was ist die Unterschrift des setRegistrationComplete() -Methode? Was ist der Typ des Arguments? Boolesch oder boolesch? – prageeth
@frageeth: OP hat klar gesagt 'Boolean'. – BalusC
@prageeth es ist öffentlich void setRegistrationComplete (Boolean registrationComplete). Und Feld registrationComplete ist Boolean – lukas