CDI ViewScope с использованием расширения CDI или MyFaces CODI или SeamFaces

Я вижу, как все, использующие MyFaces CODI или SeamFaces ViewScope Services, говорят, что CDI не имеет аннотации @ViewScope.

Если ViewScope служит только для извлечения bean-компонента после каждого обратного вызова ajax, я думаю, что CDI предоставляет расширение для добавления вашей собственной реализации и запускает событие AfterBeanDiscovery, которое будет полезно для извлечения собственного bean-компонента из ViewRoot Map.

См. эту тему http://www.verborgh.be/articles/2010/01/06/porting-the-viewscoped-jsf-annotation-to-cdi/ для получения дополнительных пояснений.

Так может ли кто-нибудь сказать мне, в чем разница между этой реализацией и MyFaces CODI или SeamFaces ViewScope?

Спасибо заранее.


person Kurohige    schedule 29.04.2013    source источник


Ответы (1)


Область представления Seam Faces немного отличается тем, что она ведет себя так же, как область представления JSF, но также допускает внедрение CDI. Кроме того, это готовые решения, а не необходимость создавать собственное решение.

person John Ament    schedule 29.04.2013
comment
в моем случае мне просто нужно было получить свой bean-компонент после каждого обратного вызова ajax (идеально работает с расширением CDI, но на самом деле это была новая созданная область для каждого вызова ajax). Я никогда не использовал управляемый bean-компонент ViewScope, что такое его поведение? - person Kurohige; 30.04.2013
comment
@Kurohige сделает ваш bean-компонент живым, пока пользователь выполняет действия в том же представлении (обычно действия ajax). Это означает, что вам не нужно загружать все свои ресурсы при каждом запросе, то есть загружать данные для <h:dataTable> и выполнять запрос ajax, чтобы отобразить всплывающее окно для редактирования/удаления строки внутри него. - person Luiggi Mendoza; 30.04.2013
comment
спасибо @LuiggiMendoza .. еще один вопрос? есть ли проблема с памятью, если я извлеку свой компонент из FacesContext ViewRoot? - person Kurohige; 30.04.2013
comment
@Kurohige это будет полностью зависеть от области действия переменной, которой вы назначаете bean-компонент, то есть bean-компонент @RequestScoped, полученный и назначенный атрибуту bean-компонента @SessionScoped, да, это приведет к утечкам памяти. - person Luiggi Mendoza; 30.04.2013