我正在使用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
答案 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的目录。