Target Unreachable,标识符'userBean'解析为空

Target Unreachable,标识符'userBean'解析为空

问题描述:

  • 有两种配置托管bean的方法,一种是使用“faces-config.xml”文件,另一种使用“annotations”。
  • 所以在这个演示中,我想在MyEclipse中使用注释来配置bean,但它不起作用。
  • 下面是代码:

1.UserBean.javaTarget Unreachable,标识符'userBean'解析为空

public class UserBean { 
String userid; 
String password; 

@Named("userBean") 
@RequestScoped 
public String getUserid() { 
    return userid; 
} 
public void setUserid(String userid) { 
    this.userid = userid; 
} 
public String getPassword() { 
    return password; 
} 
public void setPassword(String password) { 
    this.password = password; 
}} 

2.Login.xhtml the page users enter the id and password

3.Welcome.xhtml when user click the submit button, the page comes

4.faces-config.xml中 faces-config.xml


正如你所看到的,我并没有在 “faces-config.xml中” 文件中配置管理的bean,我只是用 “@Named(” 的UserBean” )“和”@RequestScoped“在我的”UserBean.java“文件中配置bean。


1.I打开login.xhtml网站

http://localhost:8080/JSF/


2.当我按一下按钮,提交数据时,它出现这个页面:

After click the submit button


我开始学习JSF,这些天,有很多困惑的事情,我需要弄清楚,非常感谢,如果你能给我一些注意事项或指导在这个问题上^ _^


(Ps.This是我在*上问的第一个问题,所以我无法直接上传图片,如果您无法通过hperlinks查看图片,请告诉我。谢谢!)

您需要设置@Named bean注释的方法。 该错误基本上说服务器无法找到托管的bean类。所以你的代码应该是这样的:

@Named("userBean") 
@RequestScoped 
public class UserBean { 
    String userid; 
    String password; 

    public String getUserid() { 
     return userid; 
    } 

我看到了你的Welcome.xhtml。你应该使用#而不是$。 所以欢迎页面应该有这样的事情

<h:outputLabel value="#{userBean.password}" /> 
+0

谢谢你的回应,我改变了你指出的代码,但它仍然出现错误页面,即使是同样的错误:目标不可达,标识“的UserBean”解析为空。 –

+0

是否在web.xml中指定了面向servlet条目? – Harsh

+0

Login.xhtml欢迎文件> 欢迎文件列表> 面临的Servlet servlet的名称> javax.faces.webapp.FacesServlet servlet-class> 1 load-on-startup> Faces Servlet servlet的名称> * .xhtml URL模式> servlet的映射> ​​javax.faces.PROJECT_STAGE Development param-value> context-param> –

  • 我想,为什么我不能使用注释豆的原因是,我没有在我的应用程序配置CDI,因为Tomcat不支持CDI本身你应该手动添加一些外部jar文件来支持它。所以这是我配置它的步骤。

  1. 下载焊接的servlet.jar文件,这里是我下载的链接,也可以从互联网上下载它。 http://www.jsf2.com/using-cdi-and-jsf-2.2-faces-flow-in-tomcat/samples/weld-servlet.jar
  2. 这个jar文件添加到目录“/ WEB-INF/lib目录“(倒是更好地构建路径)
  3. 创建 “/ WEB-INF” 下的beans.xml文件,替换现有的beans.xml文件的代码,代码片段如下:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"></beans>

  4. 还有一件事,你必须实现Serializble接口。


  • 给你我的整个方案概要。 image