Основной вопрос о поддержке бобов для Композитных Компонентов - PullRequest
0 голосов
/ 22 августа 2011

Я не могу найти никаких указаний по этому вопросу. Я пишу составной компонент, которому нужен собственный компонент поддержки, потому что он взаимодействует с базой данных.

Новый компонент также должен иметь возможность устанавливать значение в другом компоненте поддержки в результате некоторых действий пользователя.

Для этого возникает вопрос: нужно ли мне писать Java-класс @FacesComponent или обычный бин типа @ Model / @ Named (я использую аннотации CDI)? Если вы можете использовать любой из них, в чем преимущество одного или другого?

Вторичный вопрос: смогу ли я использовать CDI @Inject в @FacesComponent для получения моих DAO и подобных?

Обновление: я обнаружил, что могу получить доступ к объектам cc.attr с помощью следующего кода в обычном компоненте поддержки:

  FacesContext fc = FacesContext.getCurrentInstance();
  Object obj = fc.getApplication().evaluateExpressionGet(fc, 
            "#{cc.attrs.model.location}", Location.class);

Так что это позволяет мне получить атрибуты. Я еще не выяснил, как их написать.

Так что, похоже, единственная реальная причина сделать @FacesComponent - это если вы хотите написать код рендеринга, который будет выводить то, что не будут отображаться обычными тегами Facelets. Это правильно?

1 Ответ

1 голос
/ 23 августа 2011

Я думаю, что BalusC ответил на этот основной вопрос в этой теме .

Основным преимуществом является способность @FacesComponent получать доступ к атрибутам, к которым обычно имеет доступ UIComponent, а непытаясь связать выражения EL, выполненные в bean-компоненте.

...