19

こんにちは私はリダイレクト中に次のエラーを受け取りました:

クライアントから送信されたリクエストは構文的に正しくありませんでした

ブラウザが表示するURLは次のとおりです。localhost:8080/Project/menu/main/home/0ここでは、最初にリダイレクトされるクラス-「from」、2番目の「to」:

 /*
 * 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();
    }
}

2番目のクラス:

@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);
    }
}

解決済み:解決しました。2番目のクラスのメソッドに余分なパラメーターがあります。

4

4 に答える 4

36

このような場合、org.springframework.weblogginレベルをに設定すると非常に便利ですDEBUGlog4j configuration

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

たとえば、パラメータが欠落しているか、必要なタイプに変換できない場合、ログに例外の詳細が記録されます。

于 2013-03-15T12:38:06.097 に答える
2

私の場合、このエラーの理由は、ブラウザ(Chrome、私の特定のケース)がdateから<input type="date" ... />サーバーに間違った形式で送信していたため、サーバーがそれを解析する方法を知らなかったためです。

于 2014-05-23T14:54:37.130 に答える
0

ike3が言ったように、詳細なログを使用することは、私にとっての解決策を見つけるのに大いに役立ちました。私の場合、名前が指定されていない@PathVariableと変数自体の不一致でした。

このようなもの:

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

「uname」と「username」の違いに注意してください!内部的に発生しなかった例外があり、ログをINFOレベルに設定するまでそれを見ることができませんでした。

于 2014-08-31T01:54:29.763 に答える
0

私の場合、これも変換の問題でした。Springは整数を期待していましたが、文字列を入力していました。コントローラにパラメータとして渡したものを確認してください

于 2017-01-30T22:01:34.410 に答える