目标无法访问,标识符'demoBean'已解析为null

时间:2012-01-30 10:51:01

标签: java jsf jsf-2

我正在使用Netbeans 7.0上的JSF开发一个Web应用程序。我创建了2个页面:一个用于输入人名,另一个用于显示该名称。我正在使用带有get和set方法的java bean。

我在第一页提交表单时遇到错误。

这是我接受姓名的第一页index.xhtml

<h:form>
    Enter your Name : <h:inputText value="#{demoBean.name}" required="true"/>
    <br/> <h:commandButton value="Submit" action="welcome.xhtml"/>    
</h:form>

这是显示名称的另一页welcome.xhtml

<h:body>
    Hello #{demoBean.name}
</h:body>

这是托管bean demoBean.java

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

@ManagedBean()
@SessionScoped

public class demoBean {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

这是我提交第一页时收到的错误:

  

/index.xhtml @ 10,86 value =“#{demoBean.name}”:目标无法访问,标识符'demoBean'
      解析为null

3 个答案:

答案 0 :(得分:4)

JSP框架要求您的bean类名称符合Java命名约定,即&#34; CamelCased&#34; (例如DemoBean),在这种情况下,它将假定bean将通过将bean名称的第一个字符转换为小写(demoBean)形成的默认名称在JSP中引用。

由于您偏离了框架的期望,您需要在JSP中指定您在bean中引用bean的名称,方法是在@ManagedBean注释或可选面中指定它-config.xml文件。

答案 1 :(得分:2)

我有类似的问题。我添加了一个额外的注释。 {@Named(“demobean”)}

答案 2 :(得分:0)

要检查的另一件事是确保你的路径中有所有必需的罐子(或使用maven :))。我开始在Glassfish中解决这个问题,我的所有bean都已正确设置,因为我更改了存储Primefaces3.5 jar的目录。