Llegar error mientras se ejecuta una simple aplicación JSF

Me estoy haciendo una excepción, mientras que yo estoy tratando de ejecutar básicos de una aplicación JSF . Estoy usando JSF1.1 , JDK 6 y tomcat 6.0.18 para el mismo.

excepción

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: Error testing property 'lastname' in bean of type null
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)


root cause 

javax.faces.el.PropertyNotFoundException: Error testing property 'lastname' 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)

Siguientes son los archivos que he creado para el mismo :

//jsfmbean.jsp

<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">

    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<f:view>
<html>
<body bgcolor="cyan">
<h:form id="form1" >
<h:inputText id="text1" value="#{text2}" />
<h:inputText id="text2" value="#{player.lastname}" />
 <h:commandButton action="success" value="success" />
 <h:commandButton action="#{player.changeName}" value="failure" />
 </h:form>
</body>
</html>
</f:view>

//faces-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>

  <application>

  <locale-config>

  <default-locale>en</default-locale>  

  </locale-config>

  </application>

  <navigation-rule> 


  <from-view-id> 
   /jsfevent.jsp 
  </from-view-id> 

  <navigation-case>
  <from-outcome>success</from-outcome> 
  <to-view-id>/mathew.jsp</to-view-id> 
   </navigation-case> 

   <navigation-case> 
   <from-outcome>failure</from-outcome> 
   <to-view-id>/amy.jsp</to-view-id> 
   </navigation-case> 
  </navigation-rule> 



  <navigation-rule> 
<from-view-id>/jsfmbean.jsp</from-view-id> 
<navigation-case> 
<from-outcome>success</from-outcome> 
<to-view-id>/mathew.jsp</to-view-id> 
</navigation-case> 
</navigation-rule> 

<managed-bean> 
<managed-bean-name>player</managed-bean-name> 
<managed-bean-class> 
ourdemo.player 
</managed-bean-class> 

<managed-bean-scope> 
session 
</managed-bean-scope> 

<managed-property> 
<property-name>firstname</property-name> 
<property-type>java.lang.String</property-type>
<value>Mahatma</value> 
</managed-property> 

<managed-property> 
<property-name>lastname</property-name> 
<property-type>java.lang.String</property-type>
<value>Gandhiji</value> 
</managed-property> 

</managed-bean>

</faces-config>

//Player.java

package ourdemo; 
import javax.faces.context.*; 
import javax.faces.component.*; 
import javax.faces.validator.*; 
public class Player 
{ 
String firstname ;  
String lastname ; 


public void setFirstname(String a) 
{ 
firstname=a; 
} 
public String getFirstname() 
{ 
return firstname; 
} 
//---------- 
public void setLastname(String b) 
{ 
lastname=b; 
} 
public String  getLastname() 
{ 
return lastname; 
} 
//-------------------
public void changeName() 
{ 
lastname= firstname+" "+lastname; 
} 

}

Ayuda por favor …

>estoy usando JSF1.1 – por favor a sí mismo y a todos los demás que se tiene que leer o trabajar con el código un favor y utilizar, al menos, JSF 1.2, pero mejor JSF 2.0 (funciona con Tomcat 6). Si en cualquier longitud posible, el uso de JSF 2.1.

OriginalEl autor cbinder | 2011-09-04

3 Kommentare

  1. 1

    El frijol señalado por #{player} no se ha inicializado correctamente, por lo que el #{player.lastname} lanza un NullPointerException.

    OriginalEl autor Thorbjørn Ravn Andersen

  2. 1

    Java es sensible a mayúsculas y minúsculas. Se ha creado un bean gestionado con completo nombre de la clase de ourdemo.Player, pero sin embargo, usted está declarando el bean en faces-config.xml como ourdemo.player (nótese la minúscula p en lugar de las mayúsculas P). De esta manera JSF no puede encontrar y crear la clase de bean, que los resultados que #{player} es null que a su vez resulta en esta excepción.

    Lo corrijan:

    <managed-bean>
        <managed-bean-name>player</managed-bean-name> 
        <managed-bean-class>ourdemo.Player</managed-bean-class> 
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

    No relacionados para el problema concreto: estoy totalmente de acuerdo con Arjan Tijms en la pregunta, comentario: el uso de JSF 2.0 o posterior si, siempre que sea posible. JSF 1.1 es obsoleta para los más de 5 años y tiene muchas desventajas. Si usted está usando JSF 1.1 debido a las restricciones económicas, convencer su manager. O si usted está usando JSF 1.1 porque estás leyendo anticuados libros/tutoriales, tírelo a la basura y leer el correcto.

    OriginalEl autor BalusC

  3. 0

    Su faces-config.xml es equivocado.

    nombre de la clase de declaración que debe ser el mismo que

    <managed-bean-class> 
    ourdemo.Player 
    </managed-bean-class> 

    OriginalEl autor Burhan ARAS

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea