JSF 1.x ValueBinding устарела, что является правильной заменой? - PullRequest
8 голосов
/ 21 июля 2011

У меня есть код JSF 1.0 / 1.1:

FacesContext context = FacesContext.getCurrentInstance();
ValueBinding vb = context.getApplication().createValueBinding("#{someBean}");
SomeBean sb = (SomeBean) vb.getValue(context);

Начиная с JSF 1.2, ValueBinding устарело и заменено на ValueExpression. Я не уверен, как изменить вышеуказанный код, чтобы использовать ValueExpression.

1 Ответ

16 голосов
/ 21 июля 2011

Деталь

ValueBinding vb = context.getApplication().createValueBinding("#{someBean}");
SomeBean sb = (SomeBean) vb.getValue(context);

должна быть заменена на

ValueExpression ve = context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(), "#{someBean}", SomeBean.class);
SomeBean sb = (SomeBean) ve.getValue(context.getELContext());

или, что лучше,

SomeBean bc = context.getApplication().evaluateExpressionGet(context, "#{someBean}", SomeBean.class);

См. Также:

...