h: selectOneMenu mit booleschen Elementen funktioniert nicht mit Nullwert

8

Ich arbeite mit JSF 2.0, JBoss 7.1.1 Final und habe folgendes Problem mit selectOneMenu. Ich möchte in der Lage sein, ein Feld in einer verwalteten Bean auf true / false / null zu setzen. Daher habe ich folgendes selectOneMenu erstellt:

%Vor%

Nun, wenn ich 'Any ..' wähle, wird es dem Feld registrationComplete (das ist Boolean) "false" zuweisen. Also wird null als falsch interpretiert . Ich habe auch versucht, boolesche Werte in den selectItem (s) zu verwenden, also:

%Vor%

Und ich habe auch den Konverter in faces-config wie folgt registriert:

%Vor%

und versuchte es zu verwenden:

%Vor%

Aber alle diese Versuche führten zu demselben Verhalten - wenn der Nullwert ausgewählt wurde, wurde er als falsch interpretiert.

Ich habe es ausgepackt und in der Stack-Trace habe ich den Ort gefunden, an dem es passiert. In AstValue.setValue(EvaluationContext, Object) line: 204

ruft an

%Vor% Der Parameter

value ist null und targetClass ist Boolean. Diese coerceToType-Methode gibt dann false zurück.

Irgendwelche Ideen, wie man diese Probleme lösen kann? Danke!

    
lukas 25.07.2012, 18:44
quelle

1 Antwort

8

Dies ist typisch für den Apache EL-Parser, der von Tomcat und JBoss verwendet wird. Es ist bekannt, zwischen Primitiven und seinen Wrapper-Objektrepräsentationen nicht zu unterscheiden, wenn null -Werte in EL erzwungen werden. Die Wrapper-Typen werden immer als Primitive behandelt. Es funktioniert z. B. in Glassfish.

Sie können dieses Apache EL-Parser-Verhalten ausschalten, indem Sie Ihrem Server-Startskript das folgende VM-Argument hinzufügen:

%Vor%     
BalusC 26.07.2012, 16:21
quelle

Tags und Links