Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSF 1.x ValueBinding is deprecated, what is the correct replacement?

I have some JSF 1.0/1.1 code:

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

Since JSF 1.2, ValueBinding is deprecated and replaced by ValueExpression. I'm not sure how to change the above code in order to use ValueExpression.

like image 324
senzacionale Avatar asked Jul 21 '11 06:07

senzacionale


1 Answers

The part

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

should be replaced by

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

or, better

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

See also:

  • Get JSF managed bean by name in any Servlet related class
  • How to create dynamic JSF form fields
like image 157
BalusC Avatar answered Oct 07 '22 20:10

BalusC