大家好:我是刚开始接触JSF的,做了个例子,老是报错,请大家看看是怎么回事啊。
face-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" 
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd"><faces-config>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>org.myjsf.UserBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<navigation-rule>
<from-view-id>/index.faces</from-view-id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/welcome.faces</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>

<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
index.jsp:
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@page contentType="text/html;charset=gb2312"%> 
<html>
<head>
<title>First JSF</title>
</head>
<body>    
<f:view>        
<h:form>            
<h3>请输入你的名称</h3>            
名称:<h:inputText value="#{user.name}"/><p>            
<h:commandButton value="送出" action="login"/>        
</h:form>    
</f:view>
</body>
</html>
welcome.jsp:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@page contentType="text/html;charset=gb2312"%> 
<html><head><title>第一个JSF程式</title></head>
<body>    
<f:view>        
<h:outputText value="#{user.name}"/> 您好!        
<h3>欢迎使用 JavaServer Faces!</h3>    
</f:view>
</body>
</html>

解决方案 »

  1.   

    报错如下:
    exception javax.servlet.ServletException: Error testing property 'name' in bean of type null
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
    root cause javax.faces.el.PropertyNotFoundException: Error testing property 'name' in bean of type null
    com.sun.faces.el.PropertyResolverImpl.getType(PropertyResolverImpl.java:342)
    com.sun.faces.el.impl.ArraySuffix.getType(ArraySuffix.java:240)
    com.sun.faces.el.impl.ComplexValue.getType(ComplexValue.java:208)
    com.sun.faces.el.ValueBindingImpl.getType(ValueBindingImpl.java:345)
    com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:111)
    javax.faces.component.UIInput.getConvertedValue(UIInput.java:713)
    javax.faces.component.UIInput.validate(UIInput.java:638)
    javax.faces.component.UIInput.executeValidate(UIInput.java:849)
    javax.faces.component.UIInput.processValidators(UIInput.java:412)
    javax.faces.component.UIForm.processValidators(UIForm.java:170)
    javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:342)
    com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:78)
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
      

  2.   

    1.把<navigation-rule>
    <from-view-id>/index.faces</from-view-id>
    <navigation-case>
    <from-outcome>login</from-outcome>
    <to-view-id>/welcome.faces</to-view-id>
    </navigation-case>
    </navigation-rule>
    中的index.faces和welcome.faces改为index.jsp和welcome.jsp
    2.org.myjsf.UserBean类中至少要有一个属性name,并有对应的get/set方法。
      

  3.   

    查看你的UserBean中是否有name属性
      

  4.   

    都改成.jsp了,在http://localhost:8080/myjsf/index.faces可以访问,并且出现了界面,可是填写了名称,点击送出还是刚才的错误啊
    我的UserBean.java如下:
    package org.myjsf;public class UserBean {   
    private String name;       
    public void setName(String name) {        
    this.name = name;    
    }       
    public String getName() {        
    return name;    
    }
    }
      

  5.   

    我改成这样还是刚才的错误啊
    package org.myjsf;public class UserBean {   
    private String name = "gu";       
    public void setName(String name) {        
    this.name = name;    
    }       
    public String getName() {        
    return name;    
    }
    }
      

  6.   

    package cn.net.gev.myjsf.bean;/**
     * @author admin
     * @version 1.0
     */
    public class User { /**
     * 
     */
    private String name; /**
     * @return the name
     */
    public String getName() {
    return name;
    } /**
     * @param name the name to set
     */
    public void setName(String name) {
    this.name = name;
    }}
      

  7.   

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
     
    <faces-config >
    <managed-bean>
      <managed-bean-name>user</managed-bean-name>
      <managed-bean-class>cn.net.gev.myjsf.bean.User</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
     </managed-bean>
     <navigation-rule>
      <from-view-id>/user.jsp</from-view-id>
      <navigation-case>
      <from-outcome>login</from-outcome>
      <to-view-id>/main.jsp</to-view-id>
      </navigation-case>
     </navigation-rule></faces-config>
      

  8.   

    在浏览器输入http://localhost:8080/user.faces