Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/12/2010, 05:58
CaSTy
 
Fecha de Ingreso: diciembre-2010
Ubicación: Madrid
Mensajes: 42
Antigüedad: 13 años, 11 meses
Puntos: 1
Spring 3.0 + Hibernate + Struts 2.0 + MySQL(Netbeans)

Hola a todos, en primer lugar un saludo a la comunidad porque soy nuevo por aquí! jejeje

Bueno, estoy configurando una aplicación web sencilla con Hibernate + Spring 3 + Struts 2 (siguendo un tutorial) para más adelante crear una mía propia. El problema es que al ejecutarlo todo, obtengo el siguiente error (El error creo que se encuentra en la capa de Struts).

Código:
Struts Problem Report

Struts has detected an unhandled exception:
Messages: 	
File: 	escuela/web/AlumnoAction.java
Line number: 	38
Stacktraces
java.lang.NullPointerException

    escuela.web.AlumnoAction.lista(AlumnoAction.java:38)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
....
....

Básicamente lo que quiero es sacar un listado de los alumnos de la base de datos, no quiero más (por ahora jeje). Estas son mis clases y mis archivos de configuración.

Clases JAVA

Alumno
AlumnoDao (Es una Interfaz)
AlumnoDaoHibernate


AlumnoAction
Código:
package escuela.web;

import escuela.dao.AlumnoDao;
import escuela.model.Alumno;
import com.opensymphony.xwork2.ActionSupport;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

@Controller("alumnoAction")
@Scope("prototype")
public class AlumnoAction extends ActionSupport {
    private static final Log log = LogFactory.getLog(AlumnoAction.class);

    @Resource(name="alumnoDaoHibernate")
    private AlumnoDao alumnoDao;

    private List<Alumno> alumnos;

    private Long id;

    private Alumno alumno;

    public String lista() {
        log.debug("Lista de alumnos desde struts");
        alumnos = alumnoDao.lista();
        return SUCCESS;
    }

    public String edita() {
        log.debug("Editando alumno con struts");
        alumno = alumnoDao.obtiene(id);
        return SUCCESS;
    }

    public String guarda() {
        alumnoDao.guarda(alumno);
        return SUCCESS;
    }

    public List<Alumno> getAlumnos() {
        return alumnos;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Alumno getAlumno() {
        return alumno;
    }

    public void setAlumno(Alumno alumno) {
        this.alumno = alumno;
    }
}
El archvio struts.xml es el siguiente:
Código:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="default" namespace="/" extends="struts-default">
    </package>
    <package name="alumno" namespace="/jsp/alumno" extends="struts-default">
        <action name="lista" class="escuela.web.AlumnoAction" method="lista">
            <result>/SpringHibernateStruts2/jsp/alumno/lista.jsp</result>
        </action>
        <action name="edita" class="escuela.web.AlumnoAction" method="edita">
            <result>/SpringHibernateStruts2/jsp/alumno/lista.jsp</result>
        </action>        
    </package>
</struts>
Y el jsp es:

lista.jsp
Código:
<%--
    Document   : lista
    Created on : Jan 18, 2010, 11:07:39 AM
    Author     : jdmr
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%--<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>--%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Lista de Alumnos</title>
    </head>
    <body>
        <h1>Lista de Alumnos</h1>
        <table>
            <thead>
                <tr>
                    <th>Matricula</th>
                    <th>Apellido</th>
                    <th>Nombre</th>
                    <th>Correo</th>
                </tr>
            </thead>
            <tbody>
                <s:iterator value="alumnos" status="status">
                    <s:url var="editaAlumno" action="editaAlumno">
                        <s:param name="id" value="%{id}"/>
                    </s:url>
                    <tr class="<s:if test='#status.odd == true'>even</s:if><s:else>odd</s:else>">
                        <td><s:a href="%{editaAlumno}"><s:property value="matricula"/></s:a></td>
                        <td><s:property value="nombre"/></td>
                        <td><s:property value="apellido"/></td>
                        <td><s:property value="correo"/></td>
                    </tr>
                </s:iterator>
            </tbody>
        </table>
    </body>
</html>


Estoy ya un poco quemado porque ya veo errores donde creo que no los hay... llevo mas de una semana intentando arrancar el ejemplo y nada. Ya no se si es porque no estoy conectado a la Base de Datos, si he programado algo mal... por favor a ver si alguno me puede echar una mano porque me sería de gran ayuda.