Foros del Web » Programación para mayores de 30 ;) » Java »

NoSuchMethodException

Estas en el tema de NoSuchMethodException en el foro de Java en Foros del Web. Hola a todos. estoy utilizando Spring para desarrollar un sitio pero estoy teniendo problemas a intentar enviar un array de objetos a uno de mis ...
  #1 (permalink)  
Antiguo 08/04/2015, 10:38
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
NoSuchMethodException

Hola a todos.

estoy utilizando Spring para desarrollar un sitio pero estoy teniendo problemas a intentar enviar un array de objetos a uno de mis controladores.

Me está mandando ésta excepción java.lang.NoSuchMethodException lo que he estado leyendo es que ésta ocurre cuando no tienes el constructor por defecto ( sin parámetros ) pero no me funciona o lo estoy haciendo mal o ahí no es donde está el problema.
Cita:
abr 08, 2015 11:28:19 AM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() para servlet appServlet lanzó excepción
java.lang.NoSuchMethodException: [Lcom.*******.Dashboard.Notification.model.Notifica tionTO;.<init>()
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getDeclaredConstructor(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateCla ss(BeanUtils.java:104)
at org.springframework.web.bind.annotation.support.Ha ndlerMethodInvoker.resolveModelAttribute(HandlerMe thodInvoker.java:762)
at org.springframework.web.bind.annotation.support.Ha ndlerMethodInvoker.resolveHandlerArguments(Handler MethodInvoker.java:356)
at org.springframework.web.bind.annotation.support.Ha ndlerMethodInvoker.invokeHandlerMethod(HandlerMeth odInvoker.java:171)
at org.springframework.web.servlet.mvc.annotation.Ann otationMethodHandlerAdapter.invokeHandlerMethod(An notationMethodHandlerAdapter.java:436)
at org.springframework.web.servlet.mvc.annotation.Ann otationMethodHandlerAdapter.handle(AnnotationMetho dHandlerAdapter.java:424)
at org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:669)
at org.springframework.web.servlet.FrameworkServlet.d oPost(FrameworkServlet.java:585)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 330)
at org.springframework.security.web.access.intercept. FilterSecurityInterceptor.invoke(FilterSecurityInt erceptor.java:118)
at org.springframework.security.web.access.intercept. FilterSecurityInterceptor.doFilter(FilterSecurityI nterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.access.ExceptionT ranslationFilter.doFilter(ExceptionTranslationFilt er.java:113)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.session.SessionMa nagementFilter.doFilter(SessionManagementFilter.ja va:103)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.authentication.An onymousAuthenticationFilter.doFilter(AnonymousAuth enticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.servletapi.Securi tyContextHolderAwareRequestFilter.doFilter(Securit yContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.savedrequest.Requ estCacheAwareFilter.doFilter(RequestCacheAwareFilt er.java:45)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.FilterChainProxy. doFilterInternal(FilterChainProxy.java:186)
at org.springframework.security.web.FilterChainProxy. doFilter(FilterChainProxy.java:166)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.authentication.http://www.BasicAuthenticationFilter...ilter.java:150)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.authentication.Ab stractAuthenticationProcessingFilter.doFilter(Abst ractAuthenticationProcessingFilter.java:183)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.authentication.lo gout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.context.SecurityC ontextPersistenceFilter.doFilter(SecurityContextPe rsistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.saml.metadata.Metadat aGeneratorFilter.doFilter(MetadataGeneratorFilter. java:87)
at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java: 342)
at org.springframework.security.web.FilterChainProxy. doFilterInternal(FilterChainProxy.java:192)
at org.springframework.security.web.FilterChainProxy. doFilter(FilterChainProxy.java:160)
at org.springframework.web.filter.DelegatingFilterPro xy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterPro xy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at com.opensymphony.sitemesh.webapp.SiteMeshFilter.ob tainContent(SiteMeshFilter.java:129)
at com.opensymphony.sitemesh.webapp.SiteMeshFilter.do Filter(SiteMeshFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFi lter.doFilterInternal(CharacterEncodingFilter.java :88)
at org.springframework.web.filter.OncePerRequestFilte r.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

La clase que esta señalando ahí es la siguiente:
Código Java:
Ver original
  1. public class NotificationTO {
  2.     private int id;
  3.     private String description;
  4.     private Boolean activo;
  5.     private Date triggerDate;
  6.     private String mensaje;
  7.    
  8.     private String SO;
  9.     private String email;
  10.     private int idNotification;
  11.     private int idDevice;
  12.  
  13.  
  14.     // aquí los Setters y Getters
  15.  
  16.     public NotificationTO(){
  17.        
  18.     }
  19. }

el objeto que intento enviar es éste:
Código Javascript:
Ver original
  1. [{
  2.     "id": "11",
  3.     "email": "[email protected]",
  4.     "activo": true,
  5.     "description": "",
  6.     "triggerDate": "Wed Apr 08 2015 11:34:39 GMT-0500 (Hora de verano central (México))",
  7.     "mensaje": "",
  8.     "SO": "",
  9.     "idNotification": "1",
  10.     "idDevice": "1"
  11. }, {
  12.     "id": "10",
  13.     "email": "[email protected]",
  14.     "activo": false,
  15.     "description": "",
  16.     "triggerDate": "Wed Apr 08 2015 11:34:39 GMT-0500 (Hora de verano central (México))",
  17.     "mensaje": "",
  18.     "SO": "",
  19.     "idNotification": "0",
  20.     "idDevice": "1"
  21. }]

y el envío lo estoy realizando de la siguiente manera:
Código Javascript:
Ver original
  1. $.ajax({
  2.             url: httpContext + '/admin/notifications/devies/update',
  3.             //dataType: 'json',
  4.             type: 'POST',
  5.             data: { data: notificationTO },
  6.             success: function(data) {
  7.                 console.info(data);
  8.             },
  9.             error: function(err) {
  10.                 console.error(err);
  11.                 //tools.refreshOnAjaxError(err);
  12.             }
  13. });
con ésta llamada la consola arma el data de la siguiente manera:
https://www.dropbox.com/s/lra85ylf1zamy37/post.png?dl=0



y el controlador don de espero atender la petición es el siguiente:

Código Java:
Ver original
  1. @RequestMapping(value = "/admin/notifications/devies/update", method = RequestMethod.POST)
  2.     public @ResponseBody String updateNotificationsDevices(NotificationTO[] notificationsTO){
  3.        
  4.         return gson.toJson(notificationsTO);
  5.     }

he intentado también definirlo así:
public @ResponseBody String updateNotificationsDevices(List<NotificationTO> notificationsTO){


Como dato adicional, si lo defino de la siguiente manera:
public @ResponseBody String updateNotificationsDevices(NotificationTO notificationsTO){ y le envio un solo elemento desde el cliente sí recibo el dato correctamente.

Saludos y gracias por la ayuda.

Última edición por lair; 08/04/2015 a las 10:43
  #2 (permalink)  
Antiguo 08/04/2015, 13:27
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: NoSuchMethodException

http://www.leveluplunch.com/java/tut...st-webservice/
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 09/04/2015, 00:43
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: NoSuchMethodException

Buenas,

Exacto. Como indica el link de Xerelo te falta anotar el RequestBody.

public @ResponseBody String updateNotificationsDevices(@RequestBody NotificationTO[] notificationsTO){



http://stackoverflow.com/questions/2...n-vo-user-init

Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: clase, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:00.