1

我可能对OmniFaces太盲目和太陌生,并且无法在API中找到用于检索支持 bean 实例的基本方法。如果有这样的方法,我在哪里可以找到?像这个:

public static Object getBackingBean(String name) {
    FacesContext context = FacesContext.getCurrentInstance();
    Application app = context.getApplication();
    ValueExpression expression = app.getExpressionFactory()
      .createValueExpression(context.getELContext(), String.format("#{%s}", name), Object.class);
    return expression.getValue(context.getELContext());
}

或者更动态的泛型版本:

public static <T> T getBackingBean(String name) {
    FacesContext context = FacesContext.getCurrentInstance();
    Application app = context.getApplication();
    ValueExpression expression = app.getExpressionFactory()
      .createValueExpression(context.getELContext(), String.format("#{%s}", name), Object.class);
    return (T) expression.getValue(context.getELContext());
}
4

1 回答 1

2

我们有一个几乎类似的方法,但它可以评估(并获取)任何类型的表达式,而不仅仅是简化的根表达式。

这是Faces.evaluateExpressionGet

您可以按如下方式使用它:

MyBean myBean = Faces.evaluateExpressionGet("#{myBean}");

例如MyBean定义如下:

@ViewScoped
@ManagedBean
public class MyBean {
    // ...
}
于 2013-04-27T19:13:50.250 回答