Cannot forward after response has been committed 这个问题不是什么添加return的问题,而是自己代码逻辑的问题,在请求转发链中,有一个请求转发已经转发到页面,后面的请求转发当然就说response已经被提交(committed)到页面;
@RequestMapping("/editItemsSubmit")
//@ModelAttribute(value="itemsCustom")这个注解用来数据的回显;
//在要校验的pojo前面加上@Validated进行校验;并且在这个pojo后面加上BindingResult对象
public void editItemsSubmit(@Validated @ModelAttribute(value = "itemsCustom") ItemsCustom itemsCustom,
BindingResult bindingResult, HttpServletRequest request, HttpServletResponse response) throws Exception {
itemsService.updateItems(itemsCustom.getId(), itemsCustom);
//这里是校验出来数据不和要求,不是异常
if (bindingResult.hasErrors()) {
System.out.println(bindingResult.getErrorCount());
List<ObjectError> errors = bindingResult.getAllErrors();
for (ObjectError error : errors) {
System.out.println(error.getDefaultMessage());
System.out.println(error.getCode());
System.out.println(error.getObjectName());
}
request.getRequestDispatcher("editItems.action").forward(request, response);
} else {
request.getRequestDispatcher("queryItems.action").forward(request, response);
}
//不要放置在最外层,容易出现问题,两次转发之后,由于这里还有一层永远都会转发的请求出现,导致请求已经到达页面(committed),但又再次提交;
//request.getRequestDispatcher("queryItems.action").forward(request, response);
}