This question already has answers here:
Identifying and solving javax.el.PropertyNotFoundException: Target Unreachable
                                
                                    (14个回答)
                                
                        
                                4年前关闭。
            
                    
我正在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'
      解析为空

最佳答案

JSP框架希望您的bean类名称符合Java命名约定,即为“ CamelCased”(例如DemoBean),在这种情况下,它将假定JSP中将通过转换为Bean名称的第一个字符为小写(demoBean)。

由于偏离了框架的期望,因此需要通过在@ManagedBean批注中或在可选的faces-config.xml文件中进行指定,在JSP中指定引用bean的名称。

09-11 17:22