[英]Spring MVC - Handling Errors, Form Submits with Multiple forms
我有一个.JSP文件,上面有三种形式,它们的字段根据用户与Javascript / Jquery元素的交互而动态显示/隐藏。这些形式是将其操作发送到与控制器匹配的URL的spring形式。
问题是,当我提交表单且未通过验证时,表单提交的URL将保留在URL中。 然后,我执行的所有依赖于URL的操作都会被破坏,因为URL附加了form操作。
例如,如果我的.JSP的常规URL为/admin/
,而我的春季形式为:
<form:form id="form" method="POST" action="${pageContext.request.contextPath}/admin/createUser" modelAttribute="User">
如果验证失败,我的URL现在将为/admin/createUser
。 如果我随后使用Javascript / Jquery采取措施,则URL不再是有效的导航方式。 我可以绕过URL,但似乎……不理想。
我已经尝试过使用诸如"redirect:/admin/"
类的"redirect:/admin/"
,但是Spring验证将无法使用此方法,因为您基本上只是在重新加载页面。
是否有任何最佳实践或“优雅”的解决方案,或者我忽略的真正简单的事情?
无论如何,重定向都应该在客户端使用returnToURL参数完成,对于Spring中的错误处理,您可以将方法注册为错误处理程序以返回正确的错误响应:
class YourController {
/**
* see @link{org.springframework.web.bind.annotation.ExceptionHandler}
*/
@ExceptionHandler(Exception.class)
public @ResponseBody String handleException(Exception e, HttpServletResponse rsp) {
// set the response status
return "{\"error\" : ...}"'
}
}
如果收到错误,则可以将错误消息返回到自定义错误页面以显示错误消息。 或者根据您的情况,您可以再次返回管理页面。这是一些示例代码。
@RequestMapping(value = "/createUser" ,method = RequestMethod.POST) public ModelAndView create(@ModelAttribute User user) { if(user == null){ Map<String, String> model = new HashMap<String, String>(); model.put("errorCode", "00"); model.put("errorText", "Error Message Here"); return new ModelAndView("error_page", model); } return new ModelAndView("Welcome_page"); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.