我正在从JSF 1.1到JSF 2.0的迁移项目,我的一个自定义组件有这段代码。
MethodBinding mb = com.sun.faces.util.Util.createConstantMethodBinding(
String action
);
((XYZComponent)component).setAction(mb);
由于这是来自Sun jar,我没有JSF 2.0中的确切替代品。如果我继续将其更改为createMethodExpression(..)
,这会是一种正确的方法吗?
如果没有,请建议我替代方法。
答案 0 :(得分:0)
这是您的代码,但使用的是JSF MethodExpression。
FacesContext fc = FacesContext.getCurrentInstance();
ELContext elContext = fc.getELContext();
String action = "#{bean.doSomeThing(id)}";
Class<?>[] parameterTypes = new Class[1];
parameterTypes[0]=String.class;
Class<? extends String> returnType = String.class;
MethodExpression me = fc.getApplication().getExpressionFactory().createMethodExpression(elContext,action, returnType, parameterTypes);
component.setActionExpression(me);