2017-06-18 4 views
0

私はスプリングブートアプリケーションを開発中です。他の情報を確認する前に、ユーザー情報を検証する必要があります。これはスニペットです:@Validへのリクエスト

@RequestMapping(value = "/create-sp-user", method = RequestMethod.POST) 
    public String ceateCustomer(@Valid @RequestBody User user){ 
     user.setSp(true); 
     // I tried @Valid user without success 
     // In my User class if sp = true the field telNumber is mandatory 
     myService.create(user); 
} 

は、あなたが任意のアイデアを持っているでしょう:

@RequestMapping(value = "/create-user", method = RequestMethod.POST) 
public String ceateCustomer(@Valid @RequestBody User user){ 
     myService.create(user); 
} 

ユーザーが別のルートから来るとき/作成-SP-ユーザー、私は再度、有効なユーザーする必要がありますか?ドミニクが言ったように、あなたはカスタムバリデータを使用する必要があるメソッド内のオブジェクトを検証したい場合は任意のコードをコントローラ

に実行される前に

敬具

+1

他人の値に基づいて必須フィールドをチェックするデフォルトのバリエータがないので、独自のカスタムバリデータを簡単に書くことができます。 –

+0

申し訳ありませんが、私はあなたが欲しいものを得ることはありません。クライアントからのユーザー構造は何ですか?それとも** sp ** = trueに設定した後でユーザーを検証したいのですか?その場合は、ここで説明するカスタムバリデーターを作成することができます。https://stackoverflow.com/questions/12146298/spring-mvc-how-to-perform-validation - @validアノテーションで確認します**前* *すべてのコードがコントローラで実行されます。 – Dominik

+0

ありがとう@Dominikはい私はspに設定した後にユーザーを検証する必要があります – Olivier

答えて

0

は、@Valid注釈は、オブジェクトを検証します。

org.springframework.validation.Validatorを実装し、コントローラ内でvalidateメソッドを呼び出します。

@RequestMapping(value = "/create-sp-user", method = RequestMethod.POST) 
    public String ceateCustomer(@Valid @RequestBody User user, BindingResult result){ 
     user.setSp(true); 
     CustomValidator customValidator = new CustomValidator(); 
     customValidator.validate(user, result); 

     if (result.hasErrors()){ 
     //do something 
     } else { 
     myService.create(user); 
     } 
} 
+0

ありがとう@Janar私はあなたのソリューションを試してみましたが、私はすべての時間0のエラーがあります。 – Olivier

+0

バリデーターを間違って実装しましたか?バリデーターコードを投稿してください。 – Janar

+0

こんにちは@Janar私は@Olivierと一緒に働いています。これはバリデータークラスです。 'public class UserValidatorはバリデーターを実装しています{ protected Logger logger = LoggerFactory.getLogger(UserValidator.class); @Override public boolean supports( clazz){ 返されるuserInfo.class.equals(clazz); } @Override public void validate(オブジェクトターゲット、エラーエラー){ ユーザーuserInfo =(ユーザー)ターゲット; \t ... //電話番号 \t \t IF(StringUtils.isBlank(userInfo.getPhoneNumber())){ \t \t \t errors.rejectValue( "にphoneNumber"、 "にphoneNumber [必須]"、 "失敗") ; \t \t} \t \t \t ... \t} } '' – Victor

関連する問題