2017-11-23 11 views
0

私は、@RestControllerの着信要求を検証するためにhibernate validationsを使用しています。@RequestMappingリクエストを条件で検証する方法は?

問題:複数のエンドポイントに同じDTOオブジェクトを再利用したいとします。しかし、条件によってのみ(例えば、特定のエンドポイントでのみ)一部のフィールドを検証する。

@RestController 
public class ProductsServlet { 
    @GetMapping("/avail/product") 
    public Object avail(@Valid ProductDTO product) { 
     //should validate id field only 
    }  

    @GetMapping("/sell/product") 
    public Object sell(@Valid(with = GroupFuture.class) ProductDTO product) { 
     //should validate id + from field 
    }  
} 

public class ProductDTO { 
    @NotNull 
    @NotBlank 
    private String id; 

    @Future(groups = GroupFuture.class) 
    private Date from; 
} 

もちろん、@Valid(with = GroupFuture.class)ステートメントは無効です。しかし、それは私が達成しようとしていることを示しています。

これは可能ですか?

+0

Springでは、グループを指定できる 'org.springframework.validation.annotation.Validated'を使うことができます。 –

+0

例を挙げてください。 – membersound

答えて

0

また、グループを持たないフィールドの検証にはDefault.classグループを使用する必要があります。

@GetMapping("/sell/product") 
public Object sell(@Validated({Default.class, GroupFuture.class}) ProductDTO product) { 
} 
+0

答えは 'ProductDTO'で更新できますか? –

+0

'ProductDTO'に修正はありません。そのままで動作します。 – membersound

関連する問題