繁体   English   中英

Spring MVC-处理错误,表单提交多个表单

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM