JSF2: аннотация управляемого bean-компонента + область видимости + путаница с внедрением

Я хотел бы достичь этого идеализма:

  1. Чтобы иметь только 1 реализацию для контейнера JSF Bean, например, использовать только Spring или Weld, но не оба сразу . В настоящее время я использую Spring для своего внутреннего интерфейса, поэтому предпочитаю Spring.
  2. Чтобы иметь только одну аннотацию, выбирать между @ManagedBean, @Named, @Model
  3. Чтобы иметь возможность использовать все поддерживаемые области, например @RequestScoped, @SessionScoped, @ViewScoped, @FlashScoped, возможно, также @ConversationScoped
  4. Компоненты JSF могут быть введены с помощью Spring-Managed-Services (серверные службы), возможно, с использованием @Inject или @Autowired

. Пока что я не нашел лучшей комбинации для достижения это потому, что, насколько мне известно, поправьте меня, если я ошибаюсь:

  1. @ManagedBean не может быть введен с помощью служб Spring?
  2. @Named можно ввести с помощью служб Spring с помощью @Inject, но @Named использует Сварка. Могу я просто использовать Spring для управления @Named вместо Weld?
  3. @Named не поддерживает @ViewScoped и FlashScope?

Поделитесь своими мыслями и опытом.

Спасибо: -)


ОБНОВЛЕНИЕ 15 марта 2011

Обнаружена интересная страница , описывающая, как заменить Jboss Weld на Spring в качестве реализации JSR 299 CDI. В общем, на вопрос номер 2 дан ответ. На номер 1 также дан косвенный ответ, поскольку теперь я могу вводить родниковые службы.

Но все же вопрос номер 3 остается. Было бы очень полезно, если бы я мог использовать @ViewScoped и Flash Scope в @Named, что-то вроде этой статьи . Реализацию области действия Flash еще предстоит увидеть, но ближайшая из них, которую я могу найти, - это this page .

Надеюсь, замена weld на spring, поскольку реализация jsr 299 по-прежнему позволит мне использовать @ConversationScoped .

Теперь надо протестировать, пожелайте мне удачи: -)


ОБНОВЛЕНИЕ 18 МАРТА 2011 г.

Успешно использовать Spring 3 вместо сварки для выполнения @Named, @Inject. Важно установить el-resolver в файле faces-config.xml.

AFAIK, Spring 3 в настоящее время еще не поддерживает CDI, поэтому пока2 @ConversationScoped.

Для определения области действия я все еще должен использовать @Scope ( " Пожелайте мне удачи!


update

Ааа .. наконец-то готово .. Передача переменных с помощью Flash, предоставляемого JSF2, действительно работает как по волшебству. Для этого мне не нужна сторонняя реализация.

В общем, я могу обойтись без сварки, но с Spring, с общими доступными областями действия, включая область просмотра, dan может передавать данные между bean-компонентами, используя объект flash.

Не хватает одной вещи, так это объема разговора, что для меня пока не является большой проблемой. Надеюсь, будущая весна сможет поддержать этот диапазон разговора.

Ура: -)

5
задан Community 23 May 2017 в 12:06
поделиться