Чистый способ внедрить bean-компонент Spring 3 в управляемый bean-компонент JSF 2? - PullRequest
3 голосов
/ 31 октября 2011

Я перевожу наше текущее решение с JSF 1.2 на JSF 2. Поскольку мне нужно использовать новую область просмотра, я использую аннотации JSF 2.Это заставило меня добавить бины Spring, используя аннотацию JSF @ManagedProperty вместо Spring @ Autowired

Раньше это было примерно так:

@Autowired private OneService oneService

А теперь это похоже на:

@ManagedProperty(value="#{oneServiceImpl}")
private OneService oneService

Знаете ли вы, есть ли способ аннотировать управляемые свойства без необходимости указывать их имя компонента?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Нет, нет.JSF использует язык выражений (EL), чтобы определить, на какой класс вы ссылаетесь по имени.Используя класс ELResolver , он принимает переданную строку, интерпретирует и делает соответствующую ссылку.Класс SpringBeanFacesELResolver обеспечивает интеграцию между двумя платформами, перехватывает запрос и передает его в контекст Spring, который обрабатывает зависимости, необходимые для предоставления ManagedBeans, который затем передает его в собственный ELResolver JSF.Поэтому JSF нужно имя бина, чтобы знать, что вводить.

0 голосов
/ 22 марта 2012

Вы по-прежнему можете использовать Spring с JSF 2. Просто создайте пользовательскую область Spring, которая затем может быть использована в качестве области просмотра для ваших bean-компонентов.

@Named @Scope("view")
public class MyBean {

    @Inject
    private MyManagedProperty oneService;

    //...

}

Украдите реализацию области просмотра здесь:1004 *http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/

...