Hello,

I'm new to ExtVal, so it's possible I'm missing something, but I have
troubles with a page containing this :

[...]
<tr:selectOneChoice value="#{someBean.status[member]}">
[...]

Where status is declared as a Map (actually what I do here is the
el-map trick to call a method with an argument), and member is a POJO.
Works fine without ExtVal, but when I add ExtVal, I get an exception
when validating the page :

java.lang.IllegalStateException: error at binding:
#{beanBenef.beneficiaire.famille.statut[membre]} -- an el-resolver
error occurred! maybe you used an invalid binding. otherwise: please
report the issue, deactivate the el-resovler of extval via web.xml
context-param: org.apache.myfaces.extensions.validator.DEACTIVATE_EL_RESOLVER
and test again.
        at 
org.apache.myfaces.extensions.validator.core.el.DefaultELHelper.getPropertyDetailsOfValueBinding(DefaultELHelper.java:182)
        at 
org.apache.myfaces.extensions.validator.crossval.recorder.CrossValidationUserInputRecorder.recordUserInput(CrossValidationUserInputRecorder.java:56)
        at 
org.apache.myfaces.extensions.validator.core.interceptor.AbstractValidationInterceptor.beforeGetConvertedValue(AbstractValidationInterceptor.java:114)
        at 
org.apache.myfaces.extensions.validator.core.renderkit.ExtValRendererWrapper.getConvertedValue(ExtValRendererWrapper.java:468)
        at 
org.apache.myfaces.trinidad.component.UIXEditableValue.getConvertedValue(UIXEditableValue.java:422)
[...]
Caused by: java.lang.ClassCastException:
sap.metier.utilisateur.Beneficiaire cannot be cast to java.lang.String
        at 
org.apache.myfaces.extensions.validator.core.el.ExtValELResolver.setValue(ExtValELResolver.java:181)
        at com.sun.el.parser.AstValue.setValue(AstValue.java:167)
        at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:269)
        at 
com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:93)
        at 
org.apache.myfaces.extensions.validator.core.el.DefaultELHelper.getPropertyDetailsOfValueBinding(DefaultELHelper.java:178)
        ... 80 more

The exception is thrown here (ExtValELResolver.java:181) :
    public void setValue(ELContext elContext, Object o, Object o1, Object o2)
    {
        expression += "." + o1;
        property = (String)o1;  // <== HERE
[..]
"o" is my Map, o1 is the POJO, which is definitely not castable to a String !


The message says I can disable the resolver, which removes the error.
But then I have other messages from ELHelpher trying to resolve
complex EL such as #{bean.someMap[ value != null ? value :
'default']}. The message says that :'default' is not a valid EL
operator...


Is there a way to circumvent this ? I definitely need a Map with a
non-String Object as key ! Is it possible to prevent ExtVal from
analysing one EL, or one page ?

Regards,
Cedric Durmont

Reply via email to