2014-01-18 67 views
2

对于Java EE来说是新的并试图获得一个简单的JSF 2教程示例。目标无法访问,标识符'helloBean'解析为空

我在eclipse中使用动态web项目并发布到Glassfish 3服务器(运行 - >在服务器上运行)。第一个index.xhtml页面加载正确,但是当我必须访问托管bean时,会显示以下错误:

/index.xhtml @ 14,48 value =“#{helloBean.name}”:Target Unreachable,标识符'helloBean'解析为空

我已经看过关于此主题的各种其他讨论,但是这些解决方案似乎对我来说似乎不起作用(例如,添加beans.xml,为托管bean命名等,遵循命名约定)。

任何帮助将不胜感激,因为我一直坚持这一段时间。

这里是我目前正与代码:

的index.xhtml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:f="http://java.sun.com/jsf/core"  
     xmlns:h="http://java.sun.com/jsf/html"> 

    <h:head> 
     <title>JSF 2.0 Hello World</title> 
    </h:head> 
    <h:body> 
     <h3>JSF 2.0 Hello World Example - hello.xhtml</h3> 
     <h:form> 
      <h:inputText value="#{helloBean.name}"></h:inputText> 
      <h:commandButton value="Welcome Me" action="response"></h:commandButton> 
     </h:form> 
    </h:body> 
</html> 

response.xhtml:

<?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"> 

     <h:head> 
      <title>JSF 2.0 Hello World</title> 
     </h:head> 
     <h:body bgcolor="white"> 
      <h3>JSF 2.0 Hello World Example - welcome.xhtml</h3> 
      <h4>Welcome #{helloBean.name}</h4> 
     </h:body> 
    </html> 

管理的bean:

package java.hello1; 
    import javax.faces.bean.ManagedBean; 
    import javax.faces.bean.SessionScoped; 
    import java.io.Serializable; 


     @ManagedBean 
     @SessionScoped 
     public class HelloBean implements Serializable { 

      private static final long serialVersionUID = 1L; 

      private String name = "Ricardo"; 

      public String getName() { 
       return name; 
      } 
      public void setName(String name) { 
       this.name = name; 
      } 
     } 
+1

该代码似乎是正确的。尝试清理并构建它,然后再运行它。 – Omar

+0

如果使用Maven,请先清理项目。另外,尝试添加至少'beans'标记与xmlns到您的beans.xml - 谷歌它。 – GGrec

回答

0

改变“@ManagedBean”由“@Named”

0

如果有人无意中发现了这个古老的线程,我得到了代码与.getName()代替。名称工作//变量是私人而getName()是公开的

相关问题