簡體   English   中英

Http狀態400-客戶端發送的請求在語法上不正確。 春季MVC

[英]Http status 400 -The request sent by the client was syntactically incorrect. Spring MVC

我在這個問題上花了很多時間,但無法解決。 請幫忙! 當我從JSP提交表單時,出現此錯誤。 我的代碼:

<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";
}

}

您可以引發spring提供的自定義異常,使用@ControllerAdvice批注創建類,並使用不同的HTTP狀態代碼引發自定義異常

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

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

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

因此,如果可以檢查項目${singers} ,則應檢查正確替換的值。

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

我本可以解決為Object設置默認值(例如VO)的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM