这是我喜欢的效果,但我无法弄清楚语法:
@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=...
有没有办法将查询参数附加到返回字符串?
谢谢!
答案 0 :(得分:1)
查看您在问题下方添加的评论,看起来您正试图转发到视图(例如:JSP)。所以,是的,那里没有重定向。您可以在HTML FORM上设置这些参数(就像您一样)。但您也可以通过将这些值添加到模型中来设置这些值。因此,在这种情况下,您绝对应该使用第一个ModelAndView构造函数参数来指定要转发到的视图[没有"重定向" part]并使用第二个参数传递模型参数。
在将旧的Struts应用程序转换为Spring应用程序时,会发生很多事情。在struts中,它看起来像"您可以通过有趣的方式添加请求/ URL参数。实际上,一旦收到inboud HTTP请求,向URL参数添加内容就没有意义。您只是想为您的"请求处理"添加新值。逻辑(向MODEL添加参数)。如果您确实需要向URL添加参数,则仅当您要创建新请求(主要是重定向到另一个页面)时才会这样做。在这种情况下,另一个答案是在正确的路径上,但您想要将URL参数添加到"重定向:" String(在ModelAndView构造函数的FIRST参数中):
return new ModelAndView("redirect:fubar/update?param1=" + param1+ "¶m2=" + param2);
当然,如果你想重定向(HTTP 302)到另一个页面,那就是这样。
答案 1 :(得分:0)
我使用了两个控制器来渲染在地址栏中具有查询参数的视图:
@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";
}
答案 2 :(得分:0)
我是这样制作的:
ModelAndView modelAndView = new ModelAndView("redirect:/shown-in-addressbar-path?paramKey=paramValue");
return modelAndView.getViewName();