You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2008/08/29 14:20:50 UTC

svn commit: r690202 - /myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java

Author: matzew
Date: Fri Aug 29 05:20:49 2008
New Revision: 690202

URL: http://svn.apache.org/viewvc?rev=690202&view=rev
Log:
TRINIDAD-1134 - XmlMenuModel: action is interpreted as ValueExpression
Thanks to Abhijit S Ghosh for his patch

Modified:
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java?rev=690202&r1=690201&r2=690202&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java Fri Aug 29 05:20:49 2008
@@ -20,6 +20,10 @@
 
 import java.util.Map;
 
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.el.MethodExpression;
+import javax.faces.context.FacesContext;
 import javax.faces.webapp.UIComponentTag;
 
 /**
@@ -66,14 +70,17 @@
   {
     String value = _action;
 
-    // Could be EL expression
-    if (   value != null
-        && UIComponentTag.isValueReference(value)
-       ) 
+    if (value != null)
     {
-      // Value of action is EL method binding, so we 
-      // need to evaluate it
-      value = MenuUtils.getBoundValue(value, String.class);
+      FacesContext facesContext = FacesContext.getCurrentInstance();
+      ExpressionFactory expressionFactory =
+          facesContext.getApplication().getExpressionFactory();
+      ELContext context = facesContext.getELContext();
+      MethodExpression methodExpression =
+          expressionFactory.createMethodExpression(context, value,
+              String.class, new Class<?>[]
+              {});
+      value = (String) methodExpression.invoke(context, null);
     }
 
     // Post me as the selected Node for the request