0

我使用spring-data-rest來通過spring servlet公開數據庫內容。使用@QuerydslPredicate用於能夠通過HTTP GET發送過濾器,如:如何在@RestController中驗證@QuerydslPredicate?

localhost:8080/persons?firstname=john&lastname=doe

問題:是否有可能告訴Predicate驗證規則?例如,特定字段可能不是null,例如姓氏?

@RestController 
public class PersonServlet { 
    @GetMapping("/persons") 
    public Iterable<Person> getPersons(
      @QuerydslPredicate(root = Person.class) com.querydsl.core.types.Predicate predicate, 
      Pageable pageable) { 
     return dao.findAll(predicate, pageable); 
    } 

    @Entity  
    public class Person { 
     private String firstname; 
     private String lastname; 
     private String age; 
     //many more fields 
    } 
} 

回答

0

似乎沒有驗證的方法,例如QPerson.lastname != null

所以我用下面的方法加入@Valid Person作爲get參數並加入驗證約束如@NotNull

@RestController 
public class PersonServlet { 
    @GetMapping("/persons") 
    public Iterable<Person> getPersons(
      @QuerydslPredicate(root = Person.class) com.querydsl.core.types.Predicate predicate, 
      Pageable pageable, 
      @Valid Person p) { 
     return dao.findAll(predicate, pageable); 
    } 

    @Entity  
    public class Person { 
     private String firstname; 

     @NotNull 
     private String lastname; 

     private String age; 
     //many more fields 
    } 
}