@ManagedProperty("#{sessionBean}")
未正确注入。 sessionBean
在JAR文件中声明,并且它还具有JSF 2.0兼容的faces-config。
但是当我使用
FacesContext context = FacesContext.getCurrentInstance();
sessionBean = (SessionBean) context.getApplication().evaluateExpressionGet(context, "#{sessionBean}", SessionBean.class);
它正确评估会话bean。是什么原因?
编辑:我想要注入的bean(sessionBean)位于一个JAR文件中,该文件注释为@ManagedBean和@SessionScoped。此外,JAR在META-INF / resources
中包含JSF2兼容的faces-config答案 0 :(得分:1)
1。)你在哪里注入sessionBean
?向我们展示课程定义。该课程为@ManagedBean
?
2.。)检查设置者setSessionBean(SessionBean sb)
是否被调用。
3。)setter null
中提供的值是什么?
4.。您也可以尝试执行以下操作:
@PostConstruct
private void init() {
FacesContext context = FacesContext.getCurrentInstance();
sessionBean = (SessionBean) context.getApplication().evaluateExpressionGet(context, "#{sessionBean}", SessionBean.class);
}
...并检查是否正确评估了sessionBean。
答案 1 :(得分:1)
对我而言这是一个包装问题,以下导入对我有用:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
在我使用不同包的组合(由IDE自动导入)之前:
import javax.faces.bean.ManagedProperty;
import javax.faces.view.ViewScoped;
import javax.inject.Named;