@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==";
}
}
中文件:
<beans
<context:component-scan base-package="com.myapp"/>
</beans>
我在返回时得到loginService的空指针异常name+"-->"+loginService.serviceDetails();
我该如何解决上述问题
2)我可以用@Inject
代替@ManagedBean(name="helloBean")
吗?怎么做呢?
我不认为你可以同时使用@ManagedBean
和spring。如果希望bean由spring管理,则需要使用spring ELResolver
(在faces-config.xml中),然后在JSF bean上也使用@Named
和@Scope("session")
。那么你可以(而且必须)使用@Inject
而不是@ManagedX
作为旁注—避免通过名称引用非jsf bean—只依赖它们的类型—这至少会为您省去重构的麻烦。对于JSF bean,您可以依赖默认命名并使用不带参数的@Named
。