Ressort: la requête envoyée par le client était syntaxiquement incorrecte ()
Salut j'ai reçu la prochaine erreur pendant la redirection:
la demande envoyée par le client était syntaxiquement incorrecte
URL du navigateur affiche est: localhost:8080/Project/menu/main/home/0
et voici mes classes avec redirections first - "DE", second "à":
/*
* 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();
}
}
Deuxième classe:
@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);
}
}
Résolu: Je l'ai résolu, il y a un paramètre d'excès dans la méthode de la seconde classe.
4 réponses
dans des cas comme celui-ci, il est très utile d'avoir org.springframework.web
niveau logginDEBUG
log4j configuration
<logger name="org.springframework.web">
<level value="DEBUG" />
...
</logger>
E. G. lorsque le paramètre est manquant ou ne peut pas être converti au type requis, il y aura des détails d'exception dans le journal.
dans mon cas, la raison de cette erreur était que le navigateur (Chrome, dans mon cas particulier) envoyait le date
<input type="date" ... />
pour le serveur dans le mauvais format de serveur ne savais pas comment l'analyser.
Comme l'a dit ike3, en utilisant le journal détaillé aidé beaucoup à trouver la solution pour moi. Dans mon cas, c'était un décalage entre @PathVariable sans nom spécifié, et la variable elle-même.
quelque Chose comme ceci:
@RequestMapping("/user/{uname}")
public String doSomething(@PathVariable String username) { ...
notez la différence entre" uname "et" username"! Il y avait une exception interne qui n'a pas été soulevée et je ne pouvais pas la voir jusqu'à ce que je mette le log au niveau INFO.
dans mon cas, c'était aussi un problème de conversion, Spring attendait un entier cependant j'entrais une chaîne. Essayez de vérifier ce que vous avez passé comme paramètres au contrôleur