controller
@GetMapping(value = "/add")
public String add(Model model){
model.addAttribute("complain",new Complain());
return "user/complainapply";
}
@PostMapping("/add/{id}")
public String add(@Valid Complain complain, @Valid int id, BindingResult bindingResult){
User user = adminService.findUserById(id);
complain.setUser(user);
complainService.add(complain);
if (bindingResult.hasErrors()){
return "user/complainapply";
}
return "user/showcomplain";
}
前端页面
<form:form modelAttribute="complain" action="/complain/add?id=${sessionScope.user.id}">
<table>
<tr>
<td>投诉原因</td>
<td><form:input path="complain_content"/><form:errors path="complain_content"></form:errors>
</td>
</tr>
<tr>
<td>创建时间</td>
<td><form:input path="creat_time"/><form:errors path="creat_time"></form:errors>
</td>
</tr>
<tr>
<td>投诉人</td>
<td><input name="name" type="text" value="${sessionScope.user.name}"}>
</td>
</tr>
<tr>
<td>联系电话</td>
<td><input name="phone" type="text" value="${sessionScope.user.phone}">
</td>
</tr>
</table>
<div class="buttons">
<input value="投 诉" type="submit" style="margin-right:20px; margin-top:20px;">
</div>
<br class="clear">
</form:form>
<form:form modelAttribute="complain" action="/complain/add?id=${sessionScope.user.id}">
改成
<form:form modelAttribute="complain" action="/complain/add/${sessionScope.user.id}">
post接口的id是url的一部分,不是url参数
首先你既然使用post方式传值,但是你的action中写的确实get方式的请求,其次,浏览器页面不支持直接对post路径进行访问,可以通过postman测试,第三,测试时尽量debug模式,看看方法是否进入以及参数是否正确
因为你页面提交的参数是一个model,匹配的是controller里面Get那个方法,所以返回405
如有帮助,请采纳!