java - Spring SimpleFormController - 浏览器后退按钮不起作用

标签 java spring spring-mvc

从 SimpleFormController 扩展的 Controller Http 方法 - Post

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

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

我目前想到了两种方法:

从 POST 更改为在 Controller 中获取并使用以下内容:

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

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

public VehicleDescController()
{
    setCacheSeconds(1);
}

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

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

最佳答案

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

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

关于java - Spring SimpleFormController - 浏览器后退按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14715474/

相关文章:

java - Java Web 应用程序中的层

java - 如何使用javagit获取提交的文件?

java - 将分隔文件转换为树

java - spring @Cacheable 与 Ehcache,spel 查找有效对象为 null

java - Spring Bean 构造函数无法设置 POJO 属性

java - 在 spring MVC 4 中插入约束外键

java - 按新数字时计算器会清除结果

java - 如何学习线程,尤其是在 Java 中

java - Spring MongoDB 聚合组 - 无法正确获取组查询

java - 为什么我需要在 Controller 中使用 spring 注解?