Apache EL-Implementierung die leere Zeichenfolge (oder 0 Int-Wert). Sie können es in org.apache.el.parser.AstValue Klasse finden:
public void setValue(EvaluationContext ctx, Object value)
throws ELException {
Target t = getTarget(ctx);
ctx.setPropertyResolved(false);
ELResolver resolver = ctx.getELResolver();
// coerce to the expected type
Class<?> targetClass = resolver.getType(ctx, t.base, t.property);
if (COERCE_TO_ZERO == true
|| !isAssignable(value, targetClass)) {
resolver.setValue(ctx, t.base, t.property,
ELSupport.coerceToType(value, targetClass));
} else {
resolver.setValue(ctx, t.base, t.property, value);
}
if (!ctx.isPropertyResolved()) {
throw new PropertyNotFoundException(MessageFactory.get(
"error.resolver.unhandled", t.base, t.property));
}
}
Sie können COERCE_TO_ZERO auf false gesetzt (-Dorg.apache.el.parser.COERCE_TO_ZERO = false).
Oder nutzen Sie andere el impl:
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
Und setzen context-param:
servletContext.setInitParameter("com.sun.faces.expressionFactory", "com.sun.el.ExpressionFactoryImpl");
Das el-api Seite war.
Andere Seite ist JSF.Sie müssen diesen Kontext-Parameter für JSF setzen:
servletContext.setInitParameter("javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL", "true");
Entschuldigung für mein Englisch!
Könnte ein Fehler in der Implementierung sein. Können Sie die Umgebung debuggen, um zu bestätigen, dass es sich um einen Fehler in den Mojarra-Quellen handelt? –
mögliches Duplikat von [javax.faces.INTERPRET \ _EMPTY \ _STRING \ _SUBMITTED \ _VALUES \ _AS \ _NULL funktioniert nicht mehr seit Java EE 7/EL 3.0] (http://stackoverflow.com/questions/21880017/javax-faces -interpret-empty-string-submitted-values-als-null-does-not-work-anymor) – BalusC