問題は一般的に言語/フレームワークにとらわれないものですが、それが重要な場合、私はGrailsと協力し、Grails固有のソリューションが存在する場合はそれに最も関心があります。
URLにマップされたフォームがあります:/foo/create
。ユーザーがブラウザにこのURLを入力すると、フォームが表示されます。
フォームアクション属性は、メソッドを指示し/foo/save
、メソッドを持ちますPOST
。保存が成功すると、標準のpost-redirect-getパターンが適用され、ユーザーはにリダイレクトされ/foo/show
ます。
ただし、ユーザーが誤ったデータを指定した場合は、エラーメッセージが表示され、すべてのデータが保持された同じフォームが再度表示されます。この動作を実装するためにforward
、フォームを生成するコントローラーに対して実行します(同じものがにマップされ/foo/create
ます)。
その後、ユーザーにはデータとエラーメッセージを含むフォームが表示されますが、ブラウザのURLフィールドはに変更され/foo/save
ます。また、ユーザーがフォーカスをURLフィールドに変更し、Enterキーを押すと、404が表示されます(/foo/save
+method=GET
ペアにマップされているものがないため)。
簡単に言うと、 URL/foo/save
はブラウザに表示されますが(フォームの送信後にリダイレクトがなかったため)、HTTPGETメソッドでアクセスした場合はどこにもリダイレクトされません。
この状況にどのように対処しますか?確かに、何かをマッピングすることはできますが/foo/save
、間違ったデータのフォームが送信された後、ブラウザに表示されるURLを変更しない方法があるのでしょうか。