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

Spring MVC 3中的“确认表单重新提交”弹出窗口/错误(登录错误后)

袁建木
2023-03-14

我将弹出“确认表单重新提交”-

1)刷新页面时(登录错误后)。

2) 提交登录页面后按浏览器后退按钮时(登录错误后)。

我的控制器代码是:

// Showing Login Page
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String showLoginPage(ModelMap model) {

    model.addAttribute("credentials", new Credentials());
    return "login";
}

// Submitting Login Form
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute("credentials") Credentials credentials,
        BindingResult result, ModelMap model) {

        // Validation on Login form fields
        validator.validate(credentials, result);
        if (result.hasErrors()) {
            return "login";
        }

        return "redirect:success";
} 

我的步骤是:

案例1:

i) 将用户名留空,然后单击登录按钮。这将显示错误“用户名不能为空”

ii)现在刷新页面。然后我会弹出“确认表单重新提交”。

案例二:

i)重复案例1的步骤1

然后正确填写所有字段,然后单击登录按钮。用户将被重定向到success.jsp页面

iii)现在点击浏览器的后退按钮,我会在页面上看到“确认表单重新提交”错误。

我怎样才能解决这个问题。我的代码中的错误在哪里?请指导我。

谢谢。

共有1个答案

晋安国
2023-03-14

与其在出错时转发到登录 jsp,不如将 BindingResult 保存在重定向属性中,然后重定向到登录。然后,生成的 POST-REDIRECT-GET 应解决登录错误的“确认表单重新提交”问题。

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute("credentials") Credentials credentials,
        BindingResult result, ModelMap model, RedirectAttributes attrs) {

        // Validation on Login form fields
        validator.validate(credentials, result);
        if (result.hasErrors()) {
            attrs.addFlashAttribute("org.springframework.validation.BindingResult.credentials", result);
            attrs.addFlashAttribute("credentials", credentials);
            return "redirect:login"; // Redirect to login, rather than forward
        }

        return "redirect:success";
} 
 类似资料:
  • 我目前正在创建一个Symfony3应用程序,我无法使我的登录表单工作;我遵循以下步骤: http://symfony.com/doc/current/cookbook/security/form_login_setup.html http://symfony.com/doc/current/cookbook/doctrine/registration_form.html 注册系统正在工作,但我无法

  • 为什么在给用户授权的时候会出这个错误。一切都是按照指示做的。

  • 提交表单时出错 当请求的凭据模式为“包括”时,响应中的“访问控制允许来源”标头的值不得为通配符“*”。起源'https://local.oto.com因此,不允许访问。

  • 我试图通过一个表单向数据库添加一个表。正在创建的实体称为相册,它有2个字段,艺术家和流派。这两者都是独立的实体。这两个字段用@ManyToOne进行了注释 当我提交表单时,这是我得到的错误: 以下代码是我的控制器的一部分: 下面的代码是百里香模板的一部分: 是什么导致了这个错误?

  • 本文向大家介绍jQuery实现弹出窗口中切换登录与注册表单,包括了jQuery实现弹出窗口中切换登录与注册表单的使用技巧和注意事项,需要的朋友参考一下 当点击页面中的登录或注册按钮时,将会弹出一个模态窗口,就是一个弹出层,我们可以在弹出层上轻松的切换登录与注册表单,极大的方便用户,不需要关闭层再去点击转向其他操作,在很多网站上已经广泛应用。 本文结合实例,通过使用jQuery以及CSS3和HTML

  • FOS用户捆绑表单(登录、注册等)工作正常,但不是我自己的表格,给我: CSRF令牌无效。请尝试重新提交表格 当我试图在以下位置创建资源时: 甚至: OS X EL Capitan 64 bit Web服务器: 服务器:Apache 2.4.16 服务器API:Apache 2.0处理程序(mod_php7) 线程安全:禁用 文档根: PHP: app/config/config。yml app/