@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
吗?怎么做?
答案 0 :(得分:0)
我认为你不能同时使用@ManagedBean
和弹簧。如果您希望bean由spring管理,则需要使用spring ELResolver
(在faces-config.xml中),然后在JSF bean上使用@Named
和@Scope("session")
。然后,您可以(并且必须)使用@Inject
而不是@ManagedX
作为旁注 - 避免按名称引用非jsf bean - 仅依赖于它们的类型 - 至少可以减少重构的麻烦。对于JSF bean,您可以依赖默认命名并使用@Named
而不使用参数。