Hola, estoy utilizando struts2 y me he estancado en un Action, utilizo un método execute para obtener una lista de objetos y que luego la página jsp me lo muestre, pero me da un error, parece que no encuentra la página jsp, y por lo que he visto por internet la anotación @Result parece correcta. El código del action es el siguiente:
package es.aena.sgma.controlresiduos.web.struts.action;
import java.util.Collection;
import org.apache.struts2.convention.annotation.ParentPac kage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.validation.SkipVali dation;
import com.opensymphony.xwork2.ActionSupport;
import es.aena.sgma.controlresiduos.data.vo.TipoResiduoVo ;
import es.aena.sgma.controlresiduos.service.TipoResiduoSe rvice;
@ParentPackage("default")
@Result(name = "SUCCESS", location="/jsp/controlresiduos/listaTiposResiduos.jsp")
public class ListarTiposResiduosAction extends ActionSupport{
private static final long serialVersionUID = 3127836877224957489L;
private Collection<TipoResiduoVo> tiposresiduos;
private TipoResiduoService tiporesiduoService;
public Collection<TipoResiduoVo> getTiposresiduos() {
return tiposresiduos;
}
public void setTiposresiduos(Collection<TipoResiduoVo> tiposresiduos) {
this.tiposresiduos = tiposresiduos;
}
public TipoResiduoService getTiporesiduoService() {
return tiporesiduoService;
}
public void setTiporesiduoService(TipoResiduoService tiporesiduoService) {
this.tiporesiduoService = tiporesiduoService;
}
@Override
@SkipValidation
public String execute() throws Exception {
this.setTiposresiduos(this.getTiporesiduoService() .obtenerTodosLosTiposResiduo());
return SUCCESS;
}
}
las trazas de error que salen en el servidor weblogic son:
<10-sep-2009 10H04' CEST> <Error> <HTTP> <BEA-101020> <[weblogic.servlet.interna
l.WebAppServletContext@20a5a96 - appName: 'sgma', name: '/sgma', context-path: '
/sgma'] Servlet failed with Exception
java.lang.NullPointerException
at weblogic.servlet.internal.ServletResponseImpl.send Error(ServletRespon
seImpl.java:600)
at org.apache.struts2.dispatcher.Dispatcher.sendError (Dispatcher.java:72
5)
at org.apache.struts2.dispatcher.Dispatcher.serviceAc tion(Dispatcher.jav
a:485)
at org.apache.struts2.dispatcher.FilterDispatcher.doF ilter(FilterDispatc
her.java:395)
at weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.ja
va:42)
Truncated. see log file for complete stacktrace
>
y lo que me muestra el navegador es lo siguiente:
java.lang.NullPointerException
at es.aena.sgma.controlresiduos.web.struts.action.Lis tarTiposResiduosAction.execute(ListarTiposResiduos Action.java:43)
at jrockit.reflect.VirtualNativeMethodInvoker.invoke( Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at com.opensymphony.xwork2.DefaultActionInvocation.in vokeAction(DefaultActionInvocation.java:440)
at com.opensymphony.xwork2.DefaultActionInvocation.in vokeActionOnly(DefaultActionInvocation.java:279)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.DefaultWorkflo wInterceptor.doIntercept(DefaultWorkflowIntercepto r.java:163)
at com.opensymphony.xwork2.interceptor.MethodFilterIn terceptor.intercept(MethodFilterInterceptor.java:8 7)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.validation.Annotati onValidationInterceptor.doIntercept(AnnotationVali dationInterceptor.java:50)
at com.opensymphony.xwork2.interceptor.MethodFilterIn terceptor.intercept(MethodFilterInterceptor.java:8 7)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ConversionErro rInterceptor.intercept(ConversionErrorInterceptor. java:122)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ParametersInte rceptor.doIntercept(ParametersInterceptor.java:195 )
at com.opensymphony.xwork2.interceptor.MethodFilterIn terceptor.intercept(MethodFilterInterceptor.java:8 7)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ParametersInte rceptor.doIntercept(ParametersInterceptor.java:195 )
at com.opensymphony.xwork2.interceptor.MethodFilterIn terceptor.intercept(MethodFilterInterceptor.java:8 7)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.StaticParamete rsInterceptor.intercept(StaticParametersIntercepto r.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.CheckboxInterceptor .intercept(CheckboxInterceptor.java:93)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.FileUploadIntercept or.intercept(FileUploadInterceptor.java:235)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ModelDrivenInt erceptor.intercept(ModelDrivenInterceptor.java:89)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ScopedModelDri venInterceptor.intercept(ScopedModelDrivenIntercep tor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.in voke(DefaultActionInvocation.java:236)
el error "java.lang.NullPointerException" significa que apunta a un sitio vacío ¿no es cierto? Pero en el execute le digo que devuelva SUCCESS, y con el @Result le digo que me lo envíe a la página jsp "listaTiposResiduos.jsp". ¿Podéis decirme que estoy haciendo mal? Muchas gracias, un saludo