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+ "¶m2=" + 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();