簡體   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