当前位置: 首页 > 知识库问答 >
问题:

如何防止在Spring刷新页面时重复数据

韦高格
2023-03-14

在我的项目中,我有两页,第一页用于输入数据,第二页用于向用户显示数据。刷新结果页时,数据将被复制。我试图解决这个问题,但我不熟悉PRG模式。如果用户刷新结果页,我希望防止重复。

    @RequestMapping(value = { "/display-form", "mainPage.html" }, method = RequestMethod.GET)
public ModelAndView displayForm() {
    ModelAndView mv = new ModelAndView("mainPage");
    mv.addObject("formData", new SampleModel());
    
    return mv;

}

@RequestMapping(value = "/send-form-data", method = RequestMethod.POST)
public ModelAndView processForm(@Valid @ModelAttribute("formData") SampleModel formData, BindingResult res) {
    ModelAndView mv = new ModelAndView();
    fmv.validate(formData, res);
    mv.addObject("formData", formData);
    service.delete(1);
    
    if(res.hasErrors())
    {
        mv.setViewName("mainPage");
    }
    else
    {
        mv.setViewName("result");
        service.create(formData);
        mv.addObject("list", service.findAll());
    }
    return mv;

}

共有1个答案

吉玉石
2023-03-14

尝试创建带有重定向的ModelAndView实例,以便在操作完成时获得3xx重定向(例如,到初始表单):


ModelAndView mv = new ModelAndView("redirect:/display-form");
// .. as before ..
 类似资料:
  • 问题内容: 我有一个简单的表单,可将​​文本提交到SQL表。问题在于,用户提交文本后,他们可以刷新页面,并且无需再次填写表单即可再次提交数据。提交文本后,我可以将用户重定向到另一个页面,但是我希望用户停留在同一页面上。 我记得读过一些有关为每个用户提供唯一的会话ID并将其与另一个值进行比较的信息,这些值解决了我遇到的问题,但我忘记了它在哪里。 问题答案: 使用发布/重定向/获取模式。 在我的网站上

  • 本文向大家介绍php采用session实现防止页面重复刷新,包括了php采用session实现防止页面重复刷新的使用技巧和注意事项,需要的朋友参考一下 如何防止页面重复刷新,在php环境下可以利用session来轻松实现。 b.php的代码 代码很简单,无非是把ip,以及通过POST方式提交到需要防刷新页面的数据经过md5加密后写入session中,再通过存储的session来判断刷新时间间隔从而

  • 我保证,我已经谷歌了这一切。 我有一个Spring MVC 4应用程序,它使用Thymeleaf收集表单数据并将其放入数据库。效果很好,只是我希望我的应用程序在用户点击提交按钮后将其留在表单页面上,以便他们可以继续编辑。 每次单击提交时,都会调用控制器并返回视图,从而刷新页面。我想消除刷新,并添加一个警报以确认保存。 所以我开始将表单提交转换为AJAX,并意识到这将违背使用Thymeleaf的目的

  • 我的网站路由工作正常,但当我点击刷新按钮时,问题就出现了。 在基本路线上,例如页面或组件样式保持不变,但当我刷新子路由时,例如此组件的所有样式都将丢失。 对于如何解决此问题的任何帮助,我们将不胜感激

  • 问题内容: 我是新手。我正在使用获取对象列表并将其显示在第一页上的服务。然后根据单击的对象,在下一页上设置选项卡标题。但是,当我刷新页面时,列表的范围丢失了,并且选项卡头引发了异常,导致页面无法显示信息。即使刷新第二页,是否可以保留上一个屏幕上单击了哪个对象的信息? 问题答案: 您可以使用角度本地存储 角度本地存储 示例如何使用它: 使用本地存储的示例

  • 问题内容: 我有一个简单的hibernate查询,例如: 没什么花哨的,但是它在一个相当大的事务中被多次调用(持续一秒钟,可能会加载数十个或数百个实体)。Profiler显示很多时间花在: 换句话说-在运行实际查询之前刷新会更改。 我能以某种方式完全阻止Hibernate进行刷新吗? 如果没有,我该怎么做才能使其更快? 问题答案: 默认情况下,hibernate在会话期间发出查询之前刷新(Flus