Javascript 如何在SpringMVC中允许重复提交?
我知道PRG模式可以防止页面重复提交(POST)。但是我有一个带有window.history.back()链接的JSP页面。此链接会将用户带回上一个发布的页面,但所有浏览器都会显示重新提交警告,并建议用户按重新加载按钮。我想允许用户返回到该页面,而无需任何确认。POST控制器执行搜索。在我使用的JSP页面中:Javascript 如何在SpringMVC中允许重复提交?,javascript,java,spring,jsp,spring-mvc,Javascript,Java,Spring,Jsp,Spring Mvc,我知道PRG模式可以防止页面重复提交(POST)。但是我有一个带有window.history.back()链接的JSP页面。此链接会将用户带回上一个发布的页面,但所有浏览器都会显示重新提交警告,并建议用户按重新加载按钮。我想允许用户返回到该页面,而无需任何确认。POST控制器执行搜索。在我使用的JSP页面中: <a href="javascript:;" onclick="window.history.back();">...</a> ****我不想阻止重新提交。我现
<a href="javascript:;" onclick="window.history.back();">...</a>
****我不想阻止重新提交。我现在无法尝试,所以请以下面的示例作为“指南”。。。无论如何,我认为您应该在ModelAttribute中使用,以保持您的
模型仍然使用window.history.back()
链接
因此,您可以修改控制器
如下:
@Controller
@SessionAttributes("searchObj")
public class YourController {
@RequestMapping(value="search.htm")
public ModelAndView searchResults(@ModelAtrribute(value="search") Serach search){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("search-result-page");
modelAndView.addObject("search", search);
modelAndView.addObject("searchObj", search);
return modelAndView;
}
}
不能,您必须选择是离开history.back()还是提交帖子。因此,您可以使用页面重定向更改第一个,使用GET submit更改第二个。@Alessandro我尝试了第二个解决方案,但在返回GET后,ModelAttribute为空,没有像第一个调用那样填充。
@Controller
@SessionAttributes("searchObj")
public class YourController {
@RequestMapping(value="search.htm")
public ModelAndView searchResults(@ModelAtrribute(value="search") Serach search){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("search-result-page");
modelAndView.addObject("search", search);
modelAndView.addObject("searchObj", search);
return modelAndView;
}
}