0

「Confirm Form Resubmission」ポップアップが表示されます-

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) ページを更新します。次に、「Confirm Form Resubmission」ポップアップが表示されます。

ケース 2:

i) ケース 1 のステップ 1 を繰り返す

ii) 次に、すべてのフィールドを正しく入力し、[ログイン] ボタンをクリックします。ユーザーは success.jsp ページにリダイレクトされます

iii) ブラウザの戻るボタンをクリックすると、ページに「フォームの再送信の確認」エラーが表示されます。

どうすればこの問題を解決できますか。私のコードのどこに間違いがありますか? 私を案内してください。

ありがとう。

4

1 に答える 1

0

エラー時に jsp に転送するのではなく、保存してからリダイレクトするloginことができます。結果として得られる POST-REDIRECT-GET は、ログイン エラーの「フォームの再送信の確認」の問題を解決する必要があります。BindingResultRedirectAttributeslogin

@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 に答える