0

私のhtmlドキュメントには次のものがあります:

<button onclick="doFunction()" type="submit" ...>Button</button>

関数は次のようになります。

doFunction() {
    var goToThisUrl = "www.spring_controller_method.com?redirectUrl=this_page";
    window.location.href = goToThisUrl;
}

doFunction() の URL は、Java Spring コントローラー メソッドの URL です。そのメソッドでは、データベースを操作し、元のページにリダイレクトする文字列を返します: return "redirect:" + redirectUrl.

ボタンが効かないのが難点。ボタンをクリックすると、ページが更新されますが、データベース内のデータは操作されません。これがスプリング コントローラー メソッドの問題ではないことを私が知っている理由は、次の 2 つの理由によるものです。

  • コントローラー メソッドにブレークポイントがあり、ヒットしていません。
  • 同じdoFunction()コードを Chrome 開発者コンソールで実行すると、コントローラー メソッドのブレークポイントがヒットし、データベース内のデータが変更されます。

なぜこれが起こるのかについて何か考えはありますか?

4

2 に答える 2

4

次のようなボタンから送信タイプを削除します

<button onclick="doFunction()" type="button" ...>Button</button>

type="submit" はフォーム送信に使用されるため、onclick が機能しません。

于 2013-10-25T17:21:49.457 に答える
-1

return false;デフォルトのフォーム送信を防止するために追加します。

doFunction() {
    var goToThisUrl = "www.spring_controller_method.com?redirectUrl=this_page";
    window.location.href = goToThisUrl;
    return false;
}
于 2013-10-25T17:21:25.970 に答える