2017-02-01 2 views
0

springMVCの新機能ですので、これは簡単な質問であれば私を許してください。 私はこれについてウェブで多くを検索しました。Spring MVCでモデル全体のコントローラのモデルの1つのプロパティのみを検証する方法

春には、このようなコントローラのモデルのプロパティを評価することができます。

@RequestMapping(value = "/xyz", method = RequestMethod.POST) 
public String submit(@Valid @ModelAttribute("abc") Abc abc, BindingResult result, ModelMap model) 
{ 
     // logic 
} 

マイモデル 'ABC' はここでは、この

public class Abc{ 

    @NotBlank 
    @size(min=3) 
    @Phone 
    String property1; 

    @NotNull 
    String property2; 

    ..... 
    } 

のような5つの性質を持っている@Phoneは私のカスタムバリデータです。

このコントローラは、@Valid @ModelAttribute("abc") Abc abcのために、モデル 'Abc'の5つのプロパティすべてを検証します。

しかし、私はこの必要はありません。私はちょうど 'property1'を検証したいです。

これはどのように可能ですか?

+0

最も単純なのは、他の属性から検証を削除することです。 – Arpit

+0

私がやっていることは、まずすべてのプロパティの入力フォームを取得します。その時、私はそのプロパティの1つだけを更新する必要があるall.Afterを検証する必要があるその時、私はone.Butを検証する必要があります@Arpit – nik123

+0

この質問が有効であると思われる場合は、マイナス投票を削除してください。@ Arpit – nik123

答えて

0

私があなたのコメントから理解できるように、すべての5の最初の検証後に1つのプロパティだけを更新する必要がある場合は、この単一のプロパティの更新を行うとアプリケーションが別のRequestMappingに行くようにします@Validを呼び出すことはできませんが、このプロパティに対してのみバリデータを呼び出します。

例は多分良いだろう: (これはあなたのコードを提出している)

@RequestMapping(value = "/xyz", method = RequestMethod.POST) 
public String submit(@Valid  @ModelAttribute("abc") Abc abc, BindingResult result, ModelMap model) 
{ 
    // logic 
} 

あなたが別のビューから、あなたの更新を行うと:(フォームのアクションは、このを指します)

@RequestMapping(value = "update", method = RequestMethod.POST) 
Public String update(@ModelAttribute("abc" Abc abc, BindingResult br, ModelMap model){ 
//Custom validation of single property 
/*logic 
..*/ 

同じ方法でこのプロパティを更新したいのですか?したがって、必要なプロパティのカスタムバリデータだけを作成し、必要なときに呼び出すことができます。

カスタムバリデータを作成するには、Springの 'Validator'を拡張する新しいクラスを作成します。

+0

これは冗長なvalidation.rightなのでしょうか?.Wayは良いですが、モデルにすでに定義されている検証アノテーションで特定のプロパティのみを検証できるようにする方法があります – nik123

+0

@Validのみを使用する場合は、あなたが必要とするプロパティに対してのみ検証のために注釈を付ける必要がありますが、他の4つは検証しません。 – Mike

関連する問題