2

ユーザーがブラウザーの [戻る] ボタンをクリックしたときに Command オブジェクトからの以前の検証エラー メッセージをクリアする方法は?

サンプルコードは次のとおりです。

def create = { UserInfoCommand  cmd ->
    if (cmd.validate()) {
        println("Command obect Show")
        render(view:"Show");
    } else {
      println("Command obect Show")
      render(view: "Create", model: [cmd:cmd]);
    }
}

シナリオ

ステップ 1: データを入力せずにフォームを送信すると、コマンド オブジェクトから GSP に検証メッセージが表示されます。

ステップ 2: データを含むフォームを送信し、ユーザーが成功ページに移動します。

ステップ 3: ブラウザーの [戻る] ボタンをクリックして、以前の検証メッセージに注意してください。

検証メッセージをクリアするための回避策は何ですか?

4

4 に答える 4

3

loteq が言うように、コントローラーで clearErrors() を実行するのと同じ方法で、beforeunload をキャッチし、セッションをクリアする URL を要求します。

    $(window).bind('beforeunload', function() {jQuery.get('${createLink(action: 'clearUploadSession')}');} );
于 2013-03-25T08:22:05.653 に答える
2

あなたの問題は、サーバー側ではなく、クライアント側にあります。戻るボタンをクリックすると、クライアントはページをリロードしないため、サーバーで実行したいことは何も実行されません。

ページフォームに設定できるイベントがあります。これは、ブラウザーにフォームを毎回リロードするように指示します: window.onbeforeunload. そこに空のイベント ハンドラーを配置しても、ページが強制的にリロードされます。

window.onbeforeunload = function () { }

ソース:

http://www.hunlock.com/blogs/Mastering_The_Back_Button_With_Javascript

于 2013-03-25T08:17:30.647 に答える
0

あなたが取り組んでいる Grails のバージョンはわかりませんが、Grails 2.2 には、使用できる clearErrors() メソッドがあります。

こちらをご覧ください!

于 2013-03-24T22:20:01.353 に答える
0

あなたが探しているのは、ウィキペディアで説明されている POST Redirect GET プロセスだと思います。

Post/Redirect/Get (PRG) は、フォームの送信の重複を防ぎ、ユーザー エージェント (ユーザー) にとってより直感的なインターフェイスを作成する Web 開発デザイン パターンです。PRG は、重複したフォーム送信を作成しない予測可能な方法でブックマークと更新ボタンを実装します。

ユーザーがフローを終了した場合 (あなたが言ったような成功メッセージ)、戻るボタンは、キャッシュされたページを表示する代わりに、フローの最初に移動する必要があります。ご覧のとおり、これが scaffold ページのデフォルトの動作 (作成、保存、編集、更新) です。保存や更新などの保護された投稿ページredirectは、このキャッシュを回避する を発行します。ドメインクラスのコントローラーを生成するだけで、私が話していることがわかります。

于 2013-03-28T18:30:16.713 に答える