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 }