2017-04-13 26 views
0

我知道PRG模式可以防止页面重复提交(POST)。但是我有一个带有window.history.back()链接的JSP页面。此链接将用户带回到POST的上一页,但是所有浏览器都显示重新提交警告并建议按下重新加载按钮。我想让用户回到没有任何确认的页面。 POST控制器执行搜索。在矿井JSP页面中我使用:春季MVC中如何允许重复提交?

<a href="javascript:;" onclick="window.history.back();">...</a> 

和结束点是:

 @RequestMapping(value="search.htm", method = RequestMethod.POST) 
    public String searchResults(Model model, @ModelAtrribute(value="search") Serach search, HttpServletRequest request){ 
...... 
} 

****我不想阻止重新提交。

+0

你不能,你必须选择是否离开history.back()或POST提交。所以你可以改变第一个页面重定向和第二个GET提交。 – Alessandro

+0

@Alessandro我尝试了第二种解决方案,但是在返回GET之后,ModelAttribute是空的,并且没有填充以及firt调用。 –

回答

0

我现在不能尝试一下,所以需要像“指南”下面的例子......反正我觉得你应该在顺序的ModelAttribute内使用SessionAttributes,让您的model仍然使用window.history.back()链接。

所以,你可以修改你Controller,如:

@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; 
    } 
}