用JSP / JSF EL替换BeanUtils.setProperty(表达式语言)

时间:2012-07-03 13:30:35

标签: jsf el apache-commons-beanutils

有没有办法可以显式调用JSP / JSF表达式语言(EL)来替代我可能用BeanUtils.setProperty设置嵌套和索引属性的东西?

例如,调用BeanUtils.setProperty(object, "foo.bar", "value")将导致通过反射调用object.getFoo().setBar("value")

我有没有办法在EL中做到这一点?

我想要做的是类似于<h:inputText value="#{object.foo.bar}">但是在后端方法而不是通过UI,其中“object.foo.bar”属性表达式可能是动态的。我知道BeanUtils有效,但感觉有些陈旧。

1 个答案:

答案 0 :(得分:0)

您可以使用ValueExpression#setValue()

FacesContext context = FacesContext.getCurrentInstance();
ELContext elContext = context.getELContext();
ValueExpression expression = context.getApplication().getExpressionFactory()
    .createValueExpression(elContext, "#{object.foo.bar}", String.class);
expression.setValue(elContext, "value");