SpringMVC出現400異常的原因主要是以下兩點
- 前端傳值是的參數名和後端接收時的參數名不同(與順序無關),導致400(400指的的是請求無效)
- 處理 調整前端的參數名或調整後端的參數名。
- 後端用實體類接收前端的參數。
- 和第一種一樣,前端多傳了參數,該參數不在實體類的屬性中。
- 處理 在實體類中添加屬性或者在SpringMvc的單元方法上單獨接收例如
@Controller @RequestMapping("/web/userinfo") public class UserController { @Resource private UserService userServiceImpl; @ResponseBody @RequestMapping("/getList.do") public List<User> findUserInfo(User user, String page, String pagesize){ return List<User> users = userServiceImpl.findUserInfo(user, page, pagesize); } }
-
前端傳的參數和實體類的屬性都對的上,實體類能接上參數。
- 原因 前端傳到後端都是String類型,實體類中有屬性不能由String直接轉換,最常見的就是Date類型。例如
public class User { private int id; private String name; private int age; private Date birthday; set/get
- 處理,在Date類型的birthday屬性上添加@DateTimeFormat(pattern=“yyyy-MM-dd”)註解,日期格式根據項目需求來定
public class User { private int id; private String name; private int age; @DateTimeFormat(pattern="yyyy-MM-dd") private Date birthday; set/get
該註解依賴jodatime
在pom文件中加入<!-- joda-time --> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.9</version> </dependency>
或者手動添加joda-time-2.9.9
參考博客
SpringMVC格式轉化錯誤之HTTP Status [400] – [Bad Request]
SpringMVC中出現" 400 Bad Request "錯誤
@JsonFormat與@DateTimeFormat註解的使用