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 >> > >

