我正在尝试在另一个中注入一个命名bean。 当我尝试访问注入的bean的属性时,它返回null,这意味着注入失败。
这是第一个Bean:
@Named
@SessionScoped
public class FirstMBean {
String caracter;
..........
public String goToNext(){
String caracter=FacesContext.getCurrentInstance().getExternalContext().
getRequestParameterMap().get("caracter"); this.caracter=caracter;
System.out.println("the selected caracteris"+ caracter);
return "/pages/next?faces-redirect=true"; }
}
第二个命名bean:
@Named
@SessionScoped
public class SecondMBean {
@Inject
FirstMBean firstMBean ;
String injectedCaracter ;
@PostConstruct
public void init() {
this.injectedCaracter = this.firstMBean.getCaracter();
System.out.println("injectedCaracter ----" + this.injectedCaracter);
}
在我的.xhtml页面中:
<p:commandButton value="see caracter" action="#{firstMBean.goToNext}">
<f:param name="caracter" value="#{caracter}" />
</p:commandButton>
请注意我使用tomcat服务器,我添加了WELD以支持CDI,当我将范围放到ApplicationScoped时,一切正常。