2017-11-23 3 views
0

Ich verwende hibernate validations für die Validierung eingehender Anfragen im Frühjahr @RestController.Wie validiere @RequestMapping-Anfragen nach Bedingung?

Problem: Ich möchte das gleiche DTO Objekt in mehreren Endpunkten wiederverwenden. Aber validiere einige Felder nur nach Bedingung (zB nur an bestimmten Endpunkten).

@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; 
} 

Natürlich ist die @Valid(with = GroupFuture.class) Anweisung ungültig. Aber es zeigt, was ich zu erreichen versuche.

Ist das möglich?

+0

Im Frühjahr sollten Sie 'org.springframework.validation.annotation.Validated' verwenden können, mit dem Sie eine Gruppe angeben können. –

+0

Können Sie ein Beispiel geben? – membersound

Antwort

0

Verstanden. Außerdem müssen Sie die Gruppe Default.class verwenden, um Felder zu validieren, die keine Gruppe enthalten.

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

können Sie Ihre Antwort mit 'ProductDTO' aktualisieren? –

+0

Es wurde keine Änderung an 'ProductDTO' vorgenommen. Es funktioniert einfach wie es ist. – membersound