2012-09-01 45 views
19

您好我重定向期間收到的下一個錯誤:春:通過客戶端發送的請求是語法不正確()

通過客戶端發送的請求是語法不正確

URL該瀏覽器顯示是:localhost:8080/Project/menu/main/home/0,在這裏我的課與重定向第一 - 「從」,第二個 「要」:

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

解決:我解決它,有多餘的參數在第二類的方法。

+2

我解決了這個問題,還有第二類 – Simcha

+2

您可以發佈您的解決方案作爲一個答案,事後接受它的方法多餘的參數,這將有助於社區 –

+1

@ user1640210通過,發佈解決方案並接受它會像塞爾坎所說的那樣幫助社區,並且避免人們浪費時間閱讀已經解決的問題。 – Gus

回答

34

在類似案例,這是非常有用的org.springframework.web洛水平log4j configuration

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

例如設置爲DEBUG當參數丟失或無法轉換爲所需的類型時,日誌中會顯示異常詳細信息。

2

在我的情況下,這個錯誤的原因是瀏覽器(在我的具體情況下,Chrome瀏覽器)從<input type="date" ... />發送date到格式錯誤的服務器,所以服務器不知道如何解析它。

+2

同樣的事情發生在我身上。你如何解決你的錯誤? –

0

正如說ike3,使用詳細日誌援助了很多找到我的解決方案。在我的情況下,它是不指定名稱的@PathVariable和變量本身之間的不匹配。

事情是這樣的:

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

注 「UNAME」 和 「用戶名」 的區別! 內部有一個異常沒有引發,直到我將日誌設置爲INFO級別時才能看到它。

0

在我的情況下,這也是一個轉換問題,Spring期待一個Integer,但是我輸入了一個String。嘗試檢查你有什麼作爲參數傳遞給控制器​​

相關問題