有没有办法可以显式调用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
有效,但感觉有些陈旧。
答案 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");