2013-04-26 1 views
1

Я, вероятно, слишком слеп и слишком новичок в OmniFaces, и не смог найти базовый метод в API для извлечения экземпляра компонента поддержки. Где я могу найти такой метод, если он есть? Как это:getBackingBean() в OmniFaces

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()); 
} 
+1

'' такой же, как ''. –

ответ

2

У нас есть метод, который почти так, но он может оценить (и получить) любой вид выражения не просто упрощенное корневое выражение.

Это Faces.evaluateExpressionGet.

Вы можете использовать его следующим образом:

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

С MyBean быть, например, определяется следующим образом:

@ViewScoped 
@ManagedBean 
public class MyBean { 
    // ... 
}