2017-04-13 37 views
0

我在這個問題上花了很多時間,但無法解決它。請幫忙!當我從JSP提交表單時,出現此錯誤。 我的代碼:HTTP狀態400 - 客戶端發送的請求在語法上不正確。 Spring MVC

<form action="/albums/add" method="post"> 
<%--<div><input type="file"></div>--%> 
<div>Name: <input type="text" name="name" placeholder="Name"></div> 
<div>Year: <input type="text" name="year" placeholder="Release year"></div> 
<div> 
    <select name="singer" id="singer"> 
    <c:forEach items="${singers}" var="s"> 
     <option value="${s.id}">${s.name}</option> 
    </c:forEach> 
</select> 
</div> 
<input type="submit" > 

我的控制器代碼:

@RequestMapping(value = "", method = RequestMethod.GET) 
public String albumsGET(ModelMap map) { 
    List<Album> albums = albumDAO.getAllAlbums(); 
    map.addAttribute("albums", albums); 
    return "forward:/Albums.jsp"; 
} 

@RequestMapping(value = "/add", method = RequestMethod.GET) 
public String albumsAddGET(ModelMap map) { 
    map.put("singers", singerDAO.getAllSingers()); 
    return "forward:/WEB-INF/Pages/Album/AddAlbum.jsp"; 
} 

@RequestMapping(value = "/add", method = RequestMethod.POST) 
public String albumsPOST(@ModelAttribute Album album, HttpServletRequest req) { 

     Singer s = singerDAO.getSingerById(Long.valueOf(req.getParameter("singer"))); 
     s.getAlbumList().add(album); 
     album.setSinger(s); 
     singerDAO.updateSinger(s); 
    return "redirect:/albums"; 
} 

}

+0

檢查你的'Album'和'Singer'實體,如果正確地與形式相匹配。 –

回答

1

你可以拋出Spring提供自定義異常,創建類@ControllerAdvice註釋和用不同的HTTP狀態碼拋出自定義異常

0

這是@ModelAttribute的HTTP返回代碼400的參數映射錯誤。

有一些原因會引起此錯誤。

  1. 沒有參數名稱爲您的Album對象。
  2. NULL值的映射Album Obejct。

所以,如果你可以檢查項目${singers},你應該檢查取代適當的價值。

接下來,在Album對象中,您應該檢查getter/setter方法。

我可能已經解決了這個問題,爲Object(等VO)設置的默認值

相關問題