java - sintáctico - oraciones para analizar sintacticamente primaria
Primavera: la solicitud enviada por el cliente fue sintácticamente incorrecta() (4)
Como dije , usar el registro detallado me ayudó mucho a encontrar la solución para mí. En mi caso, fue una discrepancia entre @PathVariable sin nombre especificado y la variable en sí.
Algo como esto:
@RequestMapping("/user/{uname}")
public String doSomething(@PathVariable String username) { ...
¡Note la diferencia entre "uname" y "username"! Hubo una excepción interna que no se generó y no pude verla hasta que configuré el registro en el nivel INFO.
Hola recibí el siguiente error durante la redirección:
La solicitud enviada por el cliente fue sintácticamente incorrecta.
La URL que muestra el navegador es: localhost:8080/Project/menu/main/home/0
y aquí mis clases con redirecciones primero - "de", segundo "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 resolví, hay un exceso de parámetro en el método de la segunda clase.
En casos como este, es muy útil tener el nivel de registro org.springframework.web
configurado en DEBUG
en la log4j configuration
<logger name="org.springframework.web">
<level value="DEBUG" />
...
</logger>
Por ejemplo, cuando falta un parámetro o no se puede convertir al tipo requerido, habrá una excepción detallada en el registro.
En mi caso, el motivo de este error fue que el navegador (Chrome, en mi caso particular) estaba enviando la date
desde <input type="date" ... />
al servidor en el formato incorrecto, por lo que el servidor no sabía como analizarlo
En mi caso, también fue un problema de conversión, Spring esperaba un entero, sin embargo, estaba ingresando un String. Intenta comprobar lo que has pasado como parámetros al controlador