【问题标题】:Return view string with query parameters from Spring Web MVC controller?从 Spring Web MVC 控制器返回带有查询参数的视图字符串?
【发布时间】:2015-11-13 19:50:14
【问题描述】:

这是我想要的效果,但我无法弄清楚语法:

@RequestMapping(method = RequestMethod.GET, params = { "param1", "param2" }, produces = "text/html")
public String createForm(Model uiModel, @RequestParam("param1") String param1, @RequestParam("param2") String param2, HttpServletRequest request, HttpServletResponse response) throws IOException {
  populateEditForm(uiModel, new Object());
  return "fubar/update?param1=" + param1+ "&param2=" + param2;

}

错误是

javax.servlet.ServletException: Could not resolve view with name 'fubar/update?param1=...

有没有办法将查询参数附加到返回字符串?

谢谢!

【问题讨论】:

  • 我想错了,我真正需要做的是更改表单提交的路径。添加uiModel.addAttribute("path", "fubar/update?param1=" + param1+ "&param2=" + param2); 解决了这个问题。

标签: spring-mvc


【解决方案1】:

查看您在问题下方添加的评论,您似乎正在尝试转发到视图(例如:JSP)。所以,是的,那里没有重定向。您可以在 HTML FORM 上设置这些参数(就像您所做的那样)。但是您也可以通过将它们添加到模型中来设置这些值。因此,在这种情况下,您绝对应该使用第一个 ModelAndView 构造函数参数来指定要转发到的视图[没有“重定向”部分],并使用第二个参数来传递模型参数。

在将旧的 Struts 应用程序转换为 Spring 应用程序时,经常会发生这种情况。在 struts 中,“看起来”你可以以有趣的方式添加请求/URL 参数。实际上,一旦您收到传入的 HTTP 请求,就没有必要在 URL 参数中添加内容。您只想向“请求处理”逻辑添加新值(向模型添加参数)。如果您确实需要向 URL 添加参数,那么只有在您想创建一个新请求时(主要是重定向到另一个页面)。在这种情况下,另一个答案是在正确的路径上,但您想将 URL 参数添加到“重定向:”字符串(在 ModelAndView 构造函数的 FIRST 参数中):

return new ModelAndView("redirect:fubar/update?param1=" + param1+ "&param2=" + param2);

当然,如果您想重定向 (HTTP 302) 到另一个页面。

【讨论】:

    【解决方案2】:

    我使用两个控制器来渲染一个在地址栏中有查询参数的视图:

    @GetMapping("/requesting-path")
    public String backToApp(Model model) {
        return "redirect:/shown-in-addressbar-path?paramKey=paramValue";
    }
    
    @GetMapping("/shown-in-addressbar-path")
    public String backToApp(Model model) {
        return "/view-id";
    }
    

    【讨论】:

      【解决方案3】:

      我做了:

       ModelAndView modelAndView = new ModelAndView("redirect:/shown-in-addressbar-path?paramKey=paramValue");
       return modelAndView.getViewName();
      

      【讨论】:

        猜你喜欢
        • 2017-01-16
        • 2015-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-21
        • 2011-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多