hi cedric,

you can try the current version (see [1]).

regards,
gerhard

[1] http://issues.apache.org/jira/browse/EXTVAL-113

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces



2010/8/17 Gerhard <[email protected]>

> hi cedric,
>
> you are right - however, we need a property name to identify the target.
> i'll change that - as soon as there is no property name, we don't continue
> with the validation process and log a warning.
>
> as alternative you could refactor the expression so that the map-trick is
> not at the >end< of the expression.
>
> the issue happens quite early - so everything which is in place for
> skipping the validation process won't help.
> (you could also customize extval to change the default behavior)
>
> regards,
> gerhard
>
> http://www.irian.at
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>
>
> 2010/8/17 Cédric Durmont <[email protected]>
>
> 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