1

ユーザーが(method = "post"を使用して)htmlフォームを送信すると、元のページに戻ります(ただし、一部のデータは変更されています)。ユーザーがページを更新すると、フォームが再度送信されます。私のアプリケーションでは、これにより不正な状態が発生する可能性があります(フォームデータは検証を経ずに送信されるため)。

ユーザーがページを更新したときにフォームが送信されないようにするにはどうすればよいですか?

何が起こっているのかについての基本的な考え方を与えるためのサンプルコードを次に示します。

<script type="javascript">
function verifyForm() {
//do stuff
}
...
<form onsubmit="return verifyForm();" method="post">
<input name="testing" type="text" size="8" />
<input name="save" type="submit value="Submit Form" />
</form>

次に、JSPコントローラーで:

public class myController implements Controller
{ 
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
{
// do stuff with the form data received in the request
}
}

この問題を解決できる可能性のある場所がいくつかあります。htmlページ自体、またはコントローラー(jspのMVCパターンを使用)です。これまでのところ、私の質問にほとんど当てはまるように見えるこの質問を見つけましたが、同じことを尋ねているようには見えません(また、私はPHPを使用していません)。

4

2 に答える 2

1

PRGパターンを使用する必要があります:Post / Redirect/Get。

ここでそれについて読んでください:http://en.wikipedia.org/wiki/Post/Redirect/Get

于 2012-06-07T21:48:57.070 に答える
0

標準的な解決策は、POSTが成功するたびにリダイレクトすることです。ブラウザはGETを使用してリダイレクトを実行するため、何も投稿されません。リロードすると、最初のPOSTではなくGETリクエストのみが繰り返されます。

于 2012-06-07T21:49:13.717 に答える