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