2017-09-27 9 views
0

コントローラに投稿するときにクリア可能な例外に問題があります - json with nulls。@NotNullジャパンコレクションでの検証

I ve set all fields as @NotNull. And it私はメッセージで素晴らしい例外が表示されるnull値です:オブジェクト 'フィールドのフィールドエラー':拒否された値[null])。

残念ながら@NotNullのコレクションフィールドはJsonMappingExceptionを返します。例えば

@Value 
public final class User { 

    @NotNull 
    private final Integer age; //work fine 


    @NotNull 
    private final List<Books> books; //doesn`t work 

I ve also tried with @Valid and @NotEmpty, but it didnトンのヘルプ。

私のコントローラメソッド:

@Timed 
    @ExceptionMetered 
    @PostMapping 
    @ResponseStatus(HttpStatus.CREATED) 
    @PreAuthorize("@auth.hasAccess(...)") 
    void registerUser(@RequestBody @Valid User user) { 
     userService.registerUser(user); 
    } 

は、あなたがそれと間違っているものを知っていますか?

答えて

1

両方お試しでしたか?

@NotNull 
@Valid 
private final List<Books> books; 

EDIT


春バージョン:1.4.7.RELEASE

帳:

public class Book { 

    private String id; 
    private String title; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

} 

ユーザー:

public class User { 

    @NotNull 
    private int age; 

    @NotNull 
    @Valid 
    private List<Book> books; 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public List<Book> getBooks() { 
     return books; 
    } 

    public void setBooks(List<Book> books) { 
     this.books = books; 
    } 

} 

コントローラー:

@PostMapping("/") 
public User post(@RequestBody @Valid User user) { 
    return user; 
} 

テスト:

curl -s -XPOST http://localhost:8080/ -d '{"age": 13, "books": [{"id": "test", "title": "test"}]}' -H "Content-Type:application/json" | python -m json.tool 

{ 
    "age": 13, 
    "books": [ 
    { 
     "id": "test", 
     "title": "test" 
    } 
    ] 
} 

curl -s -XPOST http://localhost:8080/ -d '{"age": 13}' -H "Content-Type:application/json" | python -m json.tool 

{ 
    "error": "Bad Request", 
    "errors": [...] 
} 

どうやら、何も間違って...

+0

はい、同じ結果:( –

+0

あなたがリクエストボディとあなたのブックを提供することができますクラスも? –

+0

これは単なる例です。 Booksクラスは、フィールドが少ない通常のクラスです(int、String)。元の投稿に私のリクエストボディを追加しました。 –

関連する問題