0

我收到“确认表格重新提交”弹出窗口-

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

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

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

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

谢谢。

4

1 回答 1

0

login您可以保存BindingResultinRedirectAttributes然后重定向到,而不是在错误时转发到jsp login。生成的 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";
} 
于 2014-01-03T20:24:28.780 回答