【发布时间】:2016-01-06 20:19:08
【问题描述】:
我一直在控制器中使用ModelAndView作为对象类型来处理与前端html表单进行数据绑定的方法。例如:
@RequestMapping(value = "/postSth", method = RequestMethod.POST)
public ModelAndView postSomething(@RequestParam("name") String name){
ModelAndView model = new ModelAndView("displayPage");
model.addObject("name", name);
return model;
}
此方法将允许我绑定name,并且我可以在POST 方法之后将name 显示到displayPage.jsp。 displayPage 是 JSP 页面名称,并使用 Spring 框架中的 InternalResourceViewResolver。
最近我一直在使用 jQuery ajax 函数将数据传递给我的控制器,我正在研究的方法如下所示:
@RequestMapping(headers = "Content-Type=application/json", value = "/postSth", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public ModelAndView postSomething(@RequestBody String name){
ModelAndView model = new ModelAndView("displayPage");
model.addObject("name", name);
return model;
}
我注意到我可以使用此控制器成功抓取JSON 字符串,但此方法不会将我的网页重定向到displayPage,并且与.addObject 的数据绑定不再起作用。
为什么它不起作用?如何将其更改为仍允许我定向到displayPage.jsp?我知道我可以在前端使用 javascript 进行重定向,但这不是我想要做的。
【问题讨论】:
-
我不明白你的问题。如果您使用 ajax 发出请求,则该 ajax 请求的响应将包含由
displayPage呈现的 html。 -
这个方法行不通是什么意思?输出是不是
displayPage的内容?您是否收到错误响应?您是否收到了其他类型的回复? -
@SotiriosDelimanolis
displayPage是jsp页面,我试图在POST之后重定向到,换句话说,当使用ajax时,它会停止重定向到@987654342 @ 通常在没有 ajax 的情况下工作。 -
您一直在使用术语redirect,但该术语的含义完全不同。您的意思是一个 Servlet
RequestDispatcherforward,它只是呈现 JSP 的 HTML 并将其写入响应。如果您打印从您在 ajax 中发出的请求中收到的响应的内容,您会看到同样的内容。 -
@SotiriosDelimanolis 我认为重定向不是正确的词,你是正确的,我知道我收到了回复的内容。我想知道的是为什么
RequestDispatcher在执行 ajax 时不再呈现displayPage.jsp?
标签: java json spring jsp spring-mvc