View Javadoc

1   package org.rcfaces.core.internal.jasper;
2   
3   import java.lang.reflect.Field;
4   
5   import javax.el.ValueExpression;
6   
7   import org.apache.commons.logging.Log;
8   import org.apache.commons.logging.LogFactory;
9   import org.apache.jasper.el.JspValueExpression;
10  import org.rcfaces.core.internal.component.IUnproxifyValueExpression;
11  
12  public class JasperUnproxifyValueExpression implements
13  		IUnproxifyValueExpression {
14  
15  	private static final Log LOG = LogFactory
16  			.getLog(JasperUnproxifyValueExpression.class);
17  
18  	private static final String TARGET_FIELD = "target";
19  
20  	public ValueExpression process(ValueExpression valueExpression) {
21  		if (valueExpression instanceof JspValueExpression) {
22  			try {
23  				Field field = valueExpression.getClass().getDeclaredField(
24  						TARGET_FIELD);
25  				field.setAccessible(true);
26  				return (ValueExpression) field.get(valueExpression);
27  				
28  			} catch (Throwable e) {
29  				LOG.error("Can not get target from JspValueExpression="
30  						+ valueExpression, e);
31  				return null;
32  			}
33  		}
34  
35  		return valueExpression;
36  
37  	}
38  
39  }