@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>我在返回name+"-->"+loginService.serviceDetails();时收到loginService的空指针异常
1)如何解决上述问题
2)可以使用@Inject代替@ManagedBean(name="helloBean")吗?如何做到这一点?
发布于 2011-09-21 00:15:18
我不认为你可以同时使用@ManagedBean和spring。如果希望由spring管理bean,则需要使用spring ELResolver (在faces-config.xml中),然后在JSF上使用@Named和@Scope("session")。然后,您可以(而且必须)使用@Inject而不是@ManagedX
顺便说一句--避免用名字来引用非jsf beans -只依赖它们的类型--至少它会帮你省去重构方面的麻烦。对于JSF,您可以使用缺省命名,并使用不带参数的@Named。
https://stackoverflow.com/questions/7487944
复制相似问题