2012-09-01 14 views
19

Hola recibí siguiente error durante la redirección:de primavera: La solicitud enviada por el cliente era sintácticamente incorrecto()

La solicitud enviada por el cliente era sintácticamente incorrecta

URL, que muestra navegador es: localhost:8080/Project/menu/main/home/0 y aquí mis clases con redirecciones primera - "de", la segunda "a":

/* 
* Get all possible values of menu and generate correct url to pages controllers 
* 
*/ 

@Controller 
@SessionAttributes("menu") 
public class MainMenuController { 


    @ModelAttribute 
    public Menu createMenu() { 
     return new Menu(); 
    } 

    @RequestMapping(value = "/menu", method = RequestMethod.GET) 
    public String mainMenuResolver(@ModelAttribute Menu menu) { 
     menu.setMainMenu("first"); 
     return "forward:/menu/first"; 
    } 

    @RequestMapping(value = "/menu/{mainMenu}", method = RequestMethod.GET) 
    public String subMenuResolver(@PathVariable String mainMenu, @ModelAttribute Menu menu) { 
     menu.setMainMenu(mainMenu); 
     menu.setSubMenu("home"); 
     return "forward:/menu/first/home"; 
    } 

    @RequestMapping(value = "/menu/{mainMenu}/{subMenu}", method = RequestMethod.GET) 
    public String secMenuResolver(@PathVariable String mainMenu, @PathVariable String subMenu, @ModelAttribute Menu menu) { 
     menu.setMainMenu(mainMenu); 
     menu.setSubMenu(subMenu); 
     menu.setSecMenu("0"); 

     if (menu.getMainMenu().equals("first")){ 
      return "redirect:/menu/main/"+menu.getSubMenu()+"/"+menu.getSecMenu(); 
     } 

     if (menu.getMainMenu().equals("second")){ 
      return "redirect:/menu/religion/"+menu.getSubMenu()+"/"+menu.getSecMenu(); 
     } 

     return "redirect:/menu/main/"+menu.getSubMenu()+"/"+menu.getSecMenu(); 
    } 
} 

segunda clase:

@Controller 
@SessionAttributes("menu") 
public class FirstPageController { 

    @ModelAttribute 
    public Menu createMenu() { 
     return new Menu(); 
    } 

    @RequestMapping(value = "/menu/main/{subMenu}/{secMenu}", method = RequestMethod.GET) 
    public ModelAndView menuResolver(@PathVariable String mainMenu, @PathVariable String subMenu,@PathVariable String secMenu, @ModelAttribute("menu") Menu menu) { 
     menu.setMainMenu(mainMenu); 
     menu.setSubMenu(subMenu); 
     menu.setSecMenu(secMenu);  

     if (menu.getSubMenu().equals("home")){ 
      String title = "Project - Home Page"; 
      return new ModelAndView("MainPage", "title", title); 
     } 

     String title = "Project - Home Page"; 
     return new ModelAndView("MainPage", "title", title); 
    } 
} 

Resuelto: Lo resuelto, hay exceso de parámetro en el método de la segunda clase.

+2

Lo he solucionado, existe un exceso de parámetro en el método de la segunda clase – Simcha

+2

Puede publicar su solución como respuesta y aceptarla después, esto ayudará a la comunidad –

+1

@ user1640210 , publicar una solución y aceptarla ayudará a la comunidad como dice Serkan, y evitará que la gente pierda el tiempo leyendo una pregunta que ya está resuelta. – Gus

Respuesta

34

En casos como este, es muy útil tener org.springframework.web nivel autenticarte establece en DEBUG en log4j configuration

<logger name="org.springframework.web"> 
    <level value="DEBUG" /> 
    ... 
</logger> 

P. ej cuando falta el parámetro o no se puede convertir al tipo requerido, habrá detalles de excepción en el registro.

2

En mi caso, la razón de este error fue que el navegador (Chrome, en mi caso particular) era enviar el date del <input type="date" ... /> al servidor en un formato incorrecto por lo que el servidor no sabía cómo analizarlo.

+2

lo mismo está sucediendo conmigo. ¿Cómo resolvió su error? –

0

Como dije ike3, utilizando el log detallado ayudó mucho para encontrar la solución para mí. En mi caso, era una discrepancia entre @PathVariable sin nombre especificado y la variable misma.

Algo como esto:

@RequestMapping("/user/{uname}") 
public String doSomething(@PathVariable String username) { ... 

Nota la diferencia entre "uname" y "nombre de usuario"! Hubo una excepción interna que no se planteó y no pude verla hasta que configuré el registro en el nivel INFO.

0

En mi caso, también era un problema de conversión, Spring esperaba un entero pero estaba ingresando un String. Trate de verificar lo que ha pasado como parámetros para el controlador

Cuestiones relacionadas