Java 在控制器之间传递表单反馈以重新显示表单错误消息时出现问题

Java 在控制器之间传递表单反馈以重新显示表单错误消息时出现问题,java,jsp,spring-mvc,jstl,Java,Jsp,Spring Mvc,Jstl,控制器A显示一些数据并显示表单 表单提交给控制器B 当在控制器B中发现表单错误时,控制器A需要重新显示表单 为此,需要在控制器a中执行返回重定向“blah” 要使用重定向将错误传递回控制器A,我可以在模型中设置错误消息: model.put("errormsg", "look what happened"); 这会产生一种恼人的效果,即将错误消息的整个文本放入URL: /controllera/somemethod?errormsg=look+what+happened 然而,尽管我在URL

控制器A显示一些数据并显示表单

表单提交给控制器B

当在控制器B中发现表单错误时,控制器A需要重新显示表单

为此,需要在控制器a中执行
返回重定向“blah”

要使用重定向将错误传递回控制器A,我可以在模型中设置错误消息:

model.put("errormsg", "look what happened");
这会产生一种恼人的效果,即将错误消息的整个文本放入URL:

/controllera/somemethod?errormsg=look+what+happened
然而,尽管我在URL上看到了文本,但当我试图从JSTL显示它时,没有显示任何内容:

<c:out value="${errormsg}"/>

有没有更好的方法来解决这些问题?

我建议:

  • 修改控制器A以接受HttpServletRequest
  • 将错误消息作为属性放入请求中:
    req.setAttribute(“errormsg”,“看看发生了什么”)

  • JSTL输出应该可以正常工作。

    将其放在JSP上:

    <c:out value="${param.errormsg}" />
    
    
    
    有没有更好的方法来解决这一切

    更好的方法是使用标准方案:控制器A显示表单、提交给控制器A的数据,如果发生错误,控制器A显示错误。如果数据有效,控制器A将重定向到控制器B