我查了许多其他线程有类似的问题,但我找不到这个错误。 CDI @Named与@ManagedBean没有冲突。 这是我使用的bean类。
@Named
@RequestScoped
public class UserBean {
private String name;
public UserBean() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String addValuesToFlashAction() {
Flash flash = FacesContext.getCurrentInstance()
.getExternalContext().getFlash();
flash.put("name", name);
return "terms?faces-redirect=true";
}
public void pullValuesFromFlashAction(ComponentSystemEvent e) {
Flash flash = FacesContext.getCurrentInstance()
.getExternalContext().getFlash();
this.name = (String) flash.get(name);
}
...
}
这是xhtml索引页面的主体
<h:body>
<f:metadata>
<f:event type="preRenderView"
listener="#{userBean.pullValuesFromFlashAction}"/>
</f:metadata>
<h:messages/>
<h:form>
Name: <h:inputText value="#{userBean.name}"/>
<h:commandButton value="Register"
action="#{userBean.addValuesToFlashAction()}"/>
</h:form>
</h:body>
当我运行时,我有 /flashIndex.xhtml @ 12,72 listener =&#34;#{userBean.pullValuesFromFlashAction}&#34;:Target Unreachable,identifier&#39; userBean&#39;解析为null ,并在glassfish日志中抛出 javax.el.PropertyNotFoundException
答案 0 :(得分:1)
解决: 我导入 javax.faces.bean.RequestScoped 而不是 javax.enterprise.context.RequestScoped