You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ja...@apache.org on 2010/03/27 18:05:34 UTC
svn commit: r928233 -
/myfaces/core/trunk/api/src/main/java/javax/faces/validator/BeanValidator.java
Author: jakobk
Date: Sat Mar 27 17:05:33 2010
New Revision: 928233
URL: http://svn.apache.org/viewvc?rev=928233&view=rev
Log:
MYFACES-2622 BeanValidator has to handle CompositeComponentExpressionHolder when resolving the ValueExpression
Modified:
myfaces/core/trunk/api/src/main/java/javax/faces/validator/BeanValidator.java
Modified: myfaces/core/trunk/api/src/main/java/javax/faces/validator/BeanValidator.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/java/javax/faces/validator/BeanValidator.java?rev=928233&r1=928232&r2=928233&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/validator/BeanValidator.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/validator/BeanValidator.java Sat Mar 27 17:05:33 2010
@@ -36,6 +36,7 @@ import javax.faces.application.FacesMess
import javax.faces.component.PartialStateHolder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
+import javax.faces.el.CompositeComponentExpressionHolder;
import javax.servlet.ServletContext;
import javax.validation.ConstraintViolation;
import javax.validation.MessageInterpolator;
@@ -509,10 +510,20 @@ final class ValueReferenceResolver exten
* @param elCtx The ELContext, needed to parse and execute the expression.
* @return The ValueReferenceWrapper.
*/
- public static ValueReferenceWrapper resolve(final ValueExpression valueExpression, final ELContext elCtx)
+ public static ValueReferenceWrapper resolve(ValueExpression valueExpression, final ELContext elCtx)
{
final ValueReferenceResolver resolver = new ValueReferenceResolver(elCtx.getELResolver());
- valueExpression.getValue(new ELContextDecorator(elCtx, resolver));
+ final ELContext elCtxDecorator = new ELContextDecorator(elCtx, resolver);
+
+ valueExpression.getValue(elCtxDecorator);
+
+ while (resolver.lastObject.getBase() instanceof CompositeComponentExpressionHolder)
+ {
+ valueExpression = ((CompositeComponentExpressionHolder) resolver.lastObject.getBase())
+ .getExpression((String) resolver.lastObject.getProperty());
+ valueExpression.getValue(elCtxDecorator);
+ }
+
return resolver.lastObject;
}