キャンセルできるフォームを作成しようとしています。クラスCancellableFormControllerが存在することがわかりました。しかし、それを使用する方法についての良い説明を見つけることができませんでした。リクエストで変数を指定する必要があることを理解しています。しかし、これをスプリングフォーム内でどのように行うのですか?誰かが私がこれを実装するのを手伝ってくれるなら。または、チュートリアルが見つからなかったので、良いチュートリアルを教えてください。
よろしくお願いします、デビッド
これは、Spring 3で非推奨になったAPIの一部であるSimpleFormController
ため、使用をお勧めしません。注釈付きMVCの代替クラスは実際には存在しませんが、複数のリクエストマッピングを使用して提供できます(春のフォーラムからの変更された例):
@RequestMapping(params="cancel=true")
public String doCancel() {
return "cancelView";
}
@RequestMapping(params="cancel!=true")
public String formSubmit(@ModelAttribute MyModelObject obj) {
processForm(obj);
return "successView";
}
通常は単純な方が良いです。フォームを「キャンセル」する最も簡単な方法は、フォームを送信しないことです。キャンセルの「ボタン」を、キャンセル後にユーザーが行きたい場所に(直接)移動するリンクにしてみませんか?
ボタンが必要な場合は、ボタンのようにリンクのスタイルを設定してください。
これが機能しない唯一の状況は、キャンセル時に特定のアクションを実行する必要がある場合ですが、通常はそうではありません。もしそうなら、それはフォームの外部にあるフォームに関連するいくつかの状態またはコンテキストがあることを意味します。このような場合は、Spring Web Flowのようなものを使用する必要があります。これには、状態遷移を処理するための確立された規則があります(キャンセルは単なる特殊なケースです)。
しかし、ほとんど<a href="...">Cancel</a>
の場合、必要なのは単純なものだけです。物事を過度に複雑にする意味はありません!
Simple Form Controllerの実装では、クライアントに初期ビューと成功ビューを提供する方法があります。しかし、フォームがユーザーによってキャンセルされるとどうなりますか?フォームのキャンセル操作は誰が処理しますか?
上記の問題は、CancellableFormControllerを使用することで即座に解決できます。良い点は、CancellableFormControllerがSimpleFormControllerを拡張して、すべての機能がこのControllerにも表示されるようにすることです。ユーザーがキャンセルボタンをクリックしたとすると、フレームワークは「cancelParamKey」という名前のキーのRequestパラメーターをチェックインします。その場合は、onCancel()メソッドを呼び出します。次の定義を検討してください。
public class MyCompleteFormController extends CancellableFormController{
public ModelAndView onCancel(){
return new ModelAndView("cancelView");
}
}