Я бы хотел добиться этого идеализма:
- Чтобы иметь только 1 реализацию для контейнера JSF Bean, хотелось бы использовать только Spring или Weld, но не оба. В настоящее время я использую Spring для своего бэкэнда, поэтому я предпочитаю Spring.
- Чтобы иметь только 1 аннотацию, выберите между @ManagedBean, @Named, @ Model
- Для возможности использования всех поддерживаемых областей, таких как @RequestScoped, @SessionScoped, @ViewScoped, @FlashScoped, возможно также @ ConversationScoped
- Бины JSF могут быть добавлены с помощью Spring-Services-Services (Внутренние сервисы), возможно, с использованием @Inject или @ Autowired
Пока я не нашел лучшей комбинации для достижения этой цели, потому что, насколько я знаю, пожалуйста, поправьте меня, если я ошибаюсь:
- @ ManagedBean нельзя вводить с помощью весенних сервисов?
- @ Named может быть добавлен в сервисы Spring с помощью @Inject, но @Named использует Weld. Могу ли я просто использовать пружину для управления @Named вместо Weld?
- @ Named не поддерживает @ViewScoped и FlashScope?
Пожалуйста, поделитесь своими мыслями и опытом.
Спасибо: -)
ОБНОВЛЕНИЕ 15 марта 2011
Нашел интересную страницу , которая описывает, как заменить Jboss Weld на Spring в качестве реализации JSR 299 CDI. Так что в основном на вопрос № 2 дан ответ. На номер 1 также ответили косвенно, так как теперь я могу вводить весенние услуги.
Но все же вопрос номер 3 остается. Мне было бы очень полезно, если бы я мог использовать @ViewScoped и Flash Scope в @Named, что-то вроде этой статьи . Флэш-область реализации еще не видна, но самая близкая, которую я могу получить, это эта страница .
Надеюсь, замена сварного шва пружиной, поскольку реализация jsr 299 все еще позволит мне использовать @ ConversationScoped.
Нужно проверить вещи сейчас, пожелайте мне удачи: -)
ОБНОВЛЕНИЕ 18 МАРТА 2011
Успешно используйте Spring 3 вместо сварки для выполнения @Named, @Inject. Важно установить el-resolver в face-config.xml.
AFAIK, Spring 3 в настоящее время еще не поддерживает CDI, поэтому bye2 @ ConversationScoped.
Для определения области действия я все еще должен использовать @Scope («запрос») или @Scope («сессия»), но если я предпочитаю @RequestScoped (javax.enterprise.context.RequestScoped) и @SessionScoped, я могу сделать использование моста, предусмотренного этой статьей .
Область («вид») для весны от эта статья работает как по волшебству: -)
Однако осталась одна проблема - как передавать объекты между Scope ("view") - бинами.
Пожелай мне удачи!
обновление
Ааа .. наконец-то сделано ..
Передача переменных с использованием Flash, предоставляемого JSF2, действительно работает как волшебство.
Для этого мне не нужна сторонняя реализация.
Так что, в принципе, я могу обойтись без сварки, но с пружиной, с общими доступными областями, включая область видимости, Дэн может проходить между бобами, используя объект flash.
Единственное, чего не хватает, так это объема разговора, который пока не представляет для меня большой проблемы.
Будем надеяться, что будущая весна поддержит эту тему разговора.
Приветствия: -)