【问题标题】:How to pass errors in Spring Controller/Model to a view file如何将 Spring Controller/Model 中的错误传递给视图文件
【发布时间】:2013-07-30 15:50:03
【问题描述】:

如何将错误从使用 Spring MVC 实现的控制器传递到视图文件?这些错误不是表单错误。只是将在“JSP”视图的 div 中显示的业务逻辑错误。

这是我的控制器操作:

@RequestMapping(method = RequestMethod.POST)
public String processLoginForm(HttpServletRequest request, LoginForm loginForm, 
BindingResult result, @SuppressWarnings("rawtypes") Map model) 
{
    loginForm = (LoginForm) model.get("loginForm");

    String gotoURL = request.getParameter("gotoURL");

    if (gotoURL == null || gotoURL == "") 
    {
        String errorMessage = "No Redirect URL Specified"; 
        return "loginerror";//loginerror is the view file I want to pass my error to.
    }
    model.put("loginForm", loginForm);
    return "loginsuccess";
}

谢谢,

【问题讨论】:

  • 使用 ModelMap 而不是 hackishly 抑制警告。
  • 如何更改我的方法签名以使用 ModelMap。对不起..这里是春季新手。
  • 没关系..明白了..谢谢

标签: java spring jsp spring-mvc


【解决方案1】:

更改您的方法签名:

public String processLoginForm(HttpServletRequest request, LoginForm loginForm,
                 BindingResult result, ModelMap model)

您可以将错误信息放在ModelMap 并转发到loginerror页面。

if (gotoURL == null || "".equals(gotoURL)) 
{
    final String errorMessage = "No Redirect URL Specified"; 
    modelMap.addAttribute("errorMessage ", errorMessage);
    return "loginerror";//loginerror is the view file I want to pass my error to.
}

您可以使用 EL 在div 中获取它。

<div>${errorMessage}</div>

【讨论】:

  • 我收到此错误:方法 addAttribute(String, String) 未定义类型 Map。如何更改我的方法签名以包含 ModelMap?
  • 附带问题:有没有办法像 if (!empty(errorMessage)) { //Displayerror div } else { //Hide it } in JSP //Display error DIV
  • 不,不能那样做,你可以做的是你可以有一个单独的 JSP 文件,该文件将包含 div 并根据 this if 条件将其包含在 JSP 中,你可以使用 JSTL。
  • 哦..哇..当我返回“loginerror”视图时,我至少可以将 error=1 作为查询字符串传递给视图吗?例如:返回“loginerror?error=1”
  • 为什么需要传递查询字符串,您传递的字符串将用于解析不是 URL 的视图。您可以在 ModelMap 中放置任何内容。
【解决方案2】:

你的方法是

public String processLoginForm(HttpServletRequest request, LoginForm loginForm,BindingResult 结果,@SuppressWarnings("rawtypes") 映射 型号)

@The New Idiot 解释的方法是

public String processLoginForm(HttpServletRequest request, LoginForm 登录表单, BindingResult 结果,ModelMap 模型)

看到Map模型被ModelMap模型替换了

如果你使用这个方法,那么你可以使用model.addAttribute来添加错误信息

【讨论】:

    【解决方案3】:

    您可以使用 Spring 支持进行异常处理..

    HandlerExceptionResolver@ExceptionHandler

    @adarshr

    Link

    希望对你有用。

    【讨论】:

    • 欢迎来到 SO。也许您可以通过提供示例和/或引用 Spring 参考手册来详细说明您的答案。
    • 一旦链接失效,您的回答将无济于事。使用链接复制此处的重要信息。
    猜你喜欢
    • 2016-07-28
    • 1970-01-01
    • 2011-09-19
    • 2018-11-03
    • 1970-01-01
    • 2021-09-05
    • 2017-01-11
    • 1970-01-01
    • 2020-11-02
    相关资源
    最近更新 更多