Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 从SpringWebMVC控制器返回带有查询参数的视图字符串?_Spring Mvc - Fatal编程技术网

Spring mvc 从SpringWebMVC控制器返回带有查询参数的视图字符串?

Spring mvc 从SpringWebMVC控制器返回带有查询参数的视图字符串?,spring-mvc,Spring Mvc,这是我想要的效果,但我无法理解语法: @RequestMapping(method = RequestMethod.GET, params = { "param1", "param2" }, produces = "text/html") public String createForm(Model uiModel, @RequestParam("param1") String param1, @RequestParam("param2") String param2, HttpServletR

这是我想要的效果,但我无法理解语法:

@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=...
是否有方法将查询参数附加到返回字符串


谢谢

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

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


当然,如果您想重定向(HTTP 302)到另一个页面,就需要这样做

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

@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";
}
我的发言如下:

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

我的想法是错误的,我真正需要做的是更改表单提交上的路径。添加
uiModel.addAttribute(“路径”、“fubar/update?param1=“+param1+”¶m2=“+param2”)修复了该问题。
 ModelAndView modelAndView = new ModelAndView("redirect:/shown-in-addressbar-path?paramKey=paramValue");
 return modelAndView.getViewName();