2

Spring MVCを使用していて、ユーザーを登録するページが必要です。私は彼らに電子メール通知を受け取るオプションを与えたいと思っています、そして私は彼らが受け入れなければならないいくつかのToSを持っているので、2つのチェックボックスがあります。テンプレートエンジンとしてthymeleafも使用しているため、HTMLチェックボックスが制限されています。チェックボックスがオンになっているかどうかに関係なく、チェックボックスの値をどのように処理して検証するかを知りたいです。チェックボックスを使用してフォーム送信を行う場合、チェックボックスがオンになっていると、値はチェックボックスの名前と値のペアとしてサーバーに渡されます。それ以外の場合は、何も渡されません。以下のようなさまざまなハンドラーメソッドがありますか?

@RequestMapping(value = "/register, 
method = RequestMethod.POST, 
params = {"notify", "agreed_tos"})
public String register(/* other params like username/email */) {
    //register user
}

@RequestMapping(value = "/register, 
method = RequestMethod.POST)
public String registerMissingToS(/* other params like username/email */) {
    // return that agreed_tos checkbox wasn't checked
}

このように、チェックボックスがオンになっている場合は最初のメソッドが呼び出され、チェックボックスがオンになっていない場合は2番目のメソッドが呼び出されます。チェックボックスがオンになっているかどうかを確認して、これらすべてを単一のコントローラーメソッドで実行できるようにする方法はありますか?これをどのように行いますか?

4

2 に答える 2

3

解決策A:少し醜いですが、最速です:RequestMappingからパラメーターを削除し、request.getParameter( "agreed_tos")を使用してこのパラメーターを確認してください。

解決策B:フォームでコマンドオブジェクトを使用するため、ユーザーがチェックボックスを空のままにしてSpringMVCがこの入力をコマンドオブジェクトフィールドにバインドした場合に備えて、thymeleafまたはspringタグが送信された非表示の入力を自動的に追加できます

解決策C:おそらく@RequestParamとdefaultValueおよびrequired = falseを使用すると、1つのメソッドで両方のケースを実行できます

于 2012-12-30T02:33:18.707 に答える
1

無効にしたときにチェックボックスが渡されないことを心配する必要はありません。Spring MVCがそれを行い、Thymeleafはそれを行うための適切なインフラストラクチャを提供します。フォームバッキングBean( Spring MVC用語ではコマンドとも呼ばれます)にブールフィールドがある場合は、心配することなくチェックボックスにマップできます。

input type="checkbox"Spring MVCアプリ(JSPまたはthymeleaf)でanが使用される場合は常に、内部でaninput type="hidden"が追加されるため、コントローラーレイヤーは、フィールドが無効になっているかチェックされていないかを完全に区別できます。

免責事項、StackOverflowルールによる:私はthymeleafの作者です。

于 2013-01-02T16:20:57.883 に答える