0

从 SimpleFormController Http 方法扩展的控制器 - 发布

提交表单并按下浏览器后退按钮后,页面已过期,我已重新加载重新提交表单的页面。

但是,我需要当用户单击浏览器后退按钮时,他不会显示页面过期页面,而是将用户重定向到表单页面。

我目前想到了两种方法:

从 POST 更改为在控制器中获取和使用以下内容:

@Override
protected boolean isFormSubmission(HttpServletRequest request) {
    return true;
}

第二种方法是在控制器的构造函数中定义缓存时间:

public VehicleDescController()
{
    setCacheSeconds(1);
}

该应用程序非常旧,并且使用基于 XML 的 spring 配置。我对 Spring MVC 也比较陌生。

请帮我找出正确的方法。谢谢。

4

1 回答 1

1

我通常喜欢在完成后将Post 方法重定向到 Get 方法。您保留 Post 方法,但始终重定向到 Get 方法以显示结果页面。这对用户来说似乎是一个正常的 get 操作,并且您不会遇到后浏览器问题。

如果 Get 方法需要一些数据(例如:记录 id),则 Post 可以将该数据存储在用户会话中,而 Get 方法可以在用户会话中查找该值。这是一种将数据从 Post 方法“传递”到 Get 方法的简单方法,并且如果用户确实点击后退按钮再次返回页面,它会将这些数据保留在用户会话中。

于 2013-02-05T20:25:13.040 回答