如何在Spring MVC中管理错误消息

时间:2014-01-16 09:25:54

标签: java spring jsp spring-mvc

我是Spring MVC的新手。我的abc页面有一个提交按钮。点击提交按钮,abcHandler调用了xyzController里面的内容。 只是想知道如何实现这种情况。

- 如果发生某些错误,则应返回一些消息 - 对于我的abc页面,它应该保持在同一页面。

我试过这个。我面临的问题是,我收到的警告信息是“你必须要有东西......”, 但它导航到错误页面意味着一个空白页面。这不应该发生。我想显示消息并保持在同一页面中。 如何使用spring MVC轻松实现。 请提出一些建议。

public class xyzController extends MultiActionController implements InitializingBean {

public ModelAndView abcHandler(HttpServletRequest request,HttpServletResponse response)throws Exception  {

// session
HttpSession session = request.getSession(true);

String abc = "";
if(abc != ""){

}else{
String error = "You must have xyzzzzzz";
return new ModelAndView("2.0/error", "downloaderror", error);
}

return new ModelAndView();
}
}

我的error.jsp就像这样

<!DOCTYPE html>
<html>
<head>
<script src="abc/js/jquery-1.9.0.min.js"></script>
</head>
<body>
<c:if test="${not empty downloaderror}">
<script>
    alert("You must have something...");        
</script>
</c:if>
</body>
</html>

4 个答案:

答案 0 :(得分:0)

在验证失败时不要返回错误页面,而是返回到同一页面,这样你的其他块中的代码应该是

}else{ String error = "You must have xyzzzzzz";
        return new ModelAndView("2.0/error", "downloaderror", abc); }

并且还将错误消息存储在你的模型映射中,对照某些键,例如“errormsg”,并在你的abc页面上检查此键,然后打印消息。

答案 1 :(得分:0)

在控制器方法中添加错误标志,如下所示

public ModelAndView abcHandler(HttpServletRequest request, HttpServletResponse response)throws Exception  {

 ModelAndView model=new ModelAndView();
 model.addObject("error", true);

 return model;

}

在JSP中

<!DOCTYPE html>
<html>
<head>
<script src="abc/js/jquery-1.9.0.min.js"></script>
</head>
<body>
<c:if test="${error}">
<script>
  alert("You must have something...");        
</script>
</c:if>
</body>
</html>

答案 2 :(得分:0)

您可以自己实现HandlerExceptionResolver。请参阅本教程:http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

答案 3 :(得分:0)

您可以通过以下方式实现该方案:

import org.springframework.web.servlet.ModelAndView; 

public ModelAndView abcHandler(HttpServletRequest request, HttpServletResponse response)throws Exception  {

 ModelAndView model=new ModelAndView();
 model.addObject("ERROR_CODE", "Error Occurred");
 model.setViewName("page1");

 return model;

}

你的jsp页面如下:

的Page1.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html>
    <html>

    <body>
    <c:if test="${!empty ERROR_CODE }">
   <c:out value="${ERROR_CODE }"></c:out>
    </c:if>
    </body>
    </html>