【问题标题】:Spring: The request sent by the client was syntactically incorrect ()Spring:客户端发送的请求语法错误()
【发布时间】:2012-08-27 01:07:56
【问题描述】:

您好,我在重定向期间收到了下一个错误:

客户端发送的请求语法错误

浏览器显示的 URL 是:localhost:8080/Project/menu/main/home/0,这里我的类首先重定向 - “from”,第二个“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();
    }
}

二等:

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

解决了:我解决了,第二类的方法有多余的参数。

【问题讨论】:

  • 我解决了,第二类的方法有多余的参数
  • 您可以发布您的解决方案作为答案并在之后接受它,这将有助于社区
  • @user1640210,正如 serkan 所说,发布解决方案并接受它将有助于社区,并避免人们浪费时间阅读已经解决的问题。

标签: java spring spring-mvc


【解决方案1】:

在这种情况下,在log4j configuration 中将org.springframework.web 登录级别设置为DEBUG 非常有用

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

例如当参数丢失或无法转换为所需类型时,日志中会有异常详情。

【讨论】:

    【解决方案2】:

    在我的情况下,这个错误的原因是浏览器(Chrome,在我的特殊情况下)以错误的格式将date&lt;input type="date" ... /&gt;发送到服务器,因此服务器不知道如何解析它.

    【讨论】:

    • 同样的事情发生在我身上。你是如何解决错误的?
    【解决方案3】:

    正如ike3 所说,使用详细日志帮助我找到了解决方案。在我的情况下,这是没有指定名称的 @PathVariable 与变量本身之间的不匹配。

    类似这样的:

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

    注意“uname”和“username”之间的区别! 内部有一个异常没有引发,直到我将日志设置为 INFO 级别后我才能看到它。

    【讨论】:

      【解决方案4】:

      在我的情况下,这也是一个转换问题,Spring 期待一个整数,但我输入的是一个字符串。尝试检查您作为参数传递给控制器​​的内容

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-18
        • 2014-01-04
        • 1970-01-01
        相关资源
        最近更新 更多