2013-08-12 3 views
0

Я использую Spring 3.1 JSF 2.2.использовать javax.faces.view.ViewScoped с CDI Spring bean и JSF

Annoting Bean with ViewScoped, представленный JSF 2.2, не работает.

@javax.inject.Named 
@javax.faces.view.ViewScoped 
public class TestBean { 
    @PostConstruct 
    public void init(){sysout("Why spring invoke this when initializing context :-(");} 
} 

В моей applicationContext.xml есть аннотацию компонент сканирования тег

<context:component-scan base-package="com.test"/> 

Spring 3.1 обнаружения и борьбы с КДИ аннотацию, но @ javax.faces.view.ViewScoped не работает. Я знаю, что есть another solution, создав мою собственную реализацию ViewScoped, но я хочу знать, почему @ javax.faces.view.ViewScoped не работает.

+0

Почему вы думаете, что весна вызывает '@ PostConstruct'? Вы не используете Spring в этом коде. Пожалуйста, объясните некоторые подробности о вашей проблеме. Требуется [sscce] (http://sscce.org/). – erencan

+0

описание обновлено – deyine

ответ

3

Лучшим решение удаляло пружины и с помощью реализации Java EE в КДИ

-2

javax.faces.view.ViewScoped будет работать только для управляемого JSF компонента, а не для CDI.

Используйте javax.faces.bean.ManagedBean аннотацию, если вы хотите иметь правильное поведение с областью просмотра вместо javax.inject.Named.

С уважением

+2

Вы вводите в заблуждение 'javax.faces.view.ViewScoped' с помощью' javax.faces.bean.ViewScoped'. Возможно, вам еще предстоит догнать новые функции JSF 2.2? http://jdevelopment.nl/jsf-22/ – BalusC

+0

Это правда ... Спасибо за исправление и за ссылку! – simplicity4k

-1

Вы должны заметить, что JSF аннотаций будет ни работать на пружину фасоль, потому что JSF фасоль, расположенной в другом контексте.

Но просмотр области реализации довольно прост. Я создал артефакт для решения этой проблемы.

См. Мой github javaplugs/spring-jsf репозиторий.