@ManagedProperty未注入

时间:2013-09-26 04:12:35

标签: jsf managed-bean

@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

2 个答案:

答案 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;