JSF2 Spring3 интеграция - PullRequest
       1

JSF2 Spring3 интеграция

0 голосов
/ 20 сентября 2011
@ManagedBean(name="helloBean")
@SessionScoped
public class HelloBean implements Serializable {
    @Inject
    @Named("loginService")
    LoginService loginService;

    private String name;

    public String getName() {
        return name+"-->"+loginService.serviceDetails();
    }

    public void setName(String name) {
        this.name = name;
    }
}

...

    @Named("loginService")
    public class LoginServiceImpl implements LoginService {

        public String serviceDetails() {
            return "==From Service==";
        }
    }

Файл ApplicationContext.xml:

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

Я получаю исключение нулевого указателя для loginService при возврате name+"-->"+loginService.serviceDetails();

1) Как решить вышеуказанную проблему

2) вместо @ManagedBean(name="helloBean") можно ли использовать @Inject? как это сделать?

1 Ответ

0 голосов
/ 20 сентября 2011

Я не думаю, что вы можете использовать @ManagedBean и пружину одновременно. Если вы хотите, чтобы ваши bean-компоненты управлялись к Spring, вам нужно использовать spring ELResolver (вface-config.xml), а затем использовать @Named и @Scope("session") для bean-компонентов JSF. , Тогда вы можете (и должны) использовать @Inject вместо @ManagedX

И в качестве sidenote - избегайте ссылаться на bean-компоненты не-jsf по имени - полагайтесь только на их тип - это избавит вас от головной боли при рефакторинге, по крайней мере. А для bean-компонентов JSF вы можете полагаться на именование по умолчанию и использовать @Named без аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...