воскресенье, 13 октября 2013 г.

Получение бина области viewScope в коде


Алгоритм примерно такой:



  1. получаем текущий Инстансе из FacesContext
  2. из него получаем контекст EL  и контекст ExpressionFactory
  3. в котором открываем ValueExpression для требуемого бина, через выражение  "#{viewScope.YourBeanName}"
  4. и получаем объект бина функцией getValue()


 Всё офигенно просто.)))

Пример:

private TreeTableStateBean getTreeTableStateObject(){
        TreeTableStateBean stateBean = null;
     
        FacesContext fctx = FacesContext.getCurrentInstance();
        ELContext elctx = fctx.getELContext();
        ExpressionFactory elFactory = fctx.getApplication().getExpressionFactory();
     
        ValueExpression ve = elFactory.createValueExpression(
                                elctx,
                                "#{viewScope.treeTableStateBean}",
                                Object.class);
     
        stateBean = (TreeTableStateBean) ve.getValue(elctx);      
        return stateBean;
      }

Ссылка:
ADF Code Corner 84. Dynamically show or hide af:treeTable columns dependent on the disclosed node

Комментариев нет:

Отправить комментарий