[jboss-cvs] jboss-seam/src/ui/org/jboss/seam/ui/facelet ...
Gavin King
gavin.king at jboss.com
Thu Oct 12 18:34:01 EDT 2006
User: gavin
Date: 06/10/12 18:34:01
Modified: src/ui/org/jboss/seam/ui/facelet
SeamExpressionFactory.java
Added: src/ui/org/jboss/seam/ui/facelet
OptionalParameterMethodExpression.java
Log:
support (at least in facelets) actionLister=#{foo.bar} where bar() has no ActionEvent parameter
Revision Changes Path
1.2 +10 -0 jboss-seam/src/ui/org/jboss/seam/ui/facelet/SeamExpressionFactory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SeamExpressionFactory.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/ui/org/jboss/seam/ui/facelet/SeamExpressionFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- SeamExpressionFactory.java 9 Aug 2006 20:30:09 -0000 1.1
+++ SeamExpressionFactory.java 12 Oct 2006 22:34:01 -0000 1.2
@@ -27,6 +27,8 @@
import javax.el.ExpressionFactory;
import javax.el.MethodExpression;
import javax.el.ValueExpression;
+import javax.faces.event.ActionEvent;
+
import org.jboss.seam.actionparam.MethodExpressionParser;
/**
@@ -78,6 +80,14 @@
return new ParamMethodExpression(parser, elContext);
}
+ if (paramTypes.length==1 && ActionEvent.class.equals( paramTypes[0] ) )
+ {
+ return new OptionalParameterMethodExpression(
+ faceletsExpressionFactory.createMethodExpression(elContext, expression, returnType, paramTypes),
+ faceletsExpressionFactory.createMethodExpression(elContext, expression, returnType, new Class[0])
+ );
+ }
+
return faceletsExpressionFactory.createMethodExpression(elContext, expression, returnType, paramTypes);
}
1.1 date: 2006/10/12 22:34:01; author: gavin; state: Exp;jboss-seam/src/ui/org/jboss/seam/ui/facelet/OptionalParameterMethodExpression.java
Index: OptionalParameterMethodExpression.java
===================================================================
/**
*
*/
package org.jboss.seam.ui.facelet;
import javax.el.ELContext;
import javax.el.MethodExpression;
import javax.el.MethodInfo;
import javax.el.MethodNotFoundException;
public class OptionalParameterMethodExpression extends MethodExpression
{
private MethodExpression withParam;
private MethodExpression withNoParam;
public OptionalParameterMethodExpression(MethodExpression withParam, MethodExpression withNoParam)
{
this.withParam = withParam;
this.withNoParam = withNoParam;
}
@Override
public MethodInfo getMethodInfo(ELContext ctx)
{
return withParam.getMethodInfo(ctx);
}
@Override
public Object invoke(ELContext ctx, Object[] args)
{
try
{
return withParam.invoke(ctx, args);
}
catch (MethodNotFoundException mnfe)
{
try
{
return withNoParam.invoke(ctx, new Object[0]);
}
catch (Exception e)
{
throw mnfe;
}
}
}
@Override
public String getExpressionString()
{
return withParam.getExpressionString();
}
@Override
public boolean isLiteralText()
{
return withParam.isLiteralText();
}
@Override
public boolean equals(Object object)
{
if ( !(object instanceof OptionalParameterMethodExpression) ) return false;
OptionalParameterMethodExpression other = (OptionalParameterMethodExpression) object;
return withParam.equals(other.withParam);
}
@Override
public int hashCode()
{
return withParam.hashCode();
}
}
More information about the jboss-cvs-commits
mailing list