2016-07-05 7 views
0

と一致して、いくつかのフィールドが必要とされて入ってくるJSONを検証しますが、JSONはそれを持っていない場合、彼らは単にヌルとして取得されていますJavaは私が要求本体からの着信JSONを検証する必要があるモデルクラス

@Document(collection = "menus") 
public class Module { 

    /** The module name as unique identifier. */ 
    @Indexed(unique = true) 
    private String name; 

    /** The internationalization key. */ 
    private String i18n; 

    /** The Angular state. */ 
    private String state; 

    ... 
} 

の着信JSONであれば、このような構造を持つ名前なし:

{ 
    "i18n": "INVOICES", 
    "state": "/invoices" 
} 

モジュールが有効であり、以下のように存続:

{ 
    "name": null, 
    "i18n": "INVOICES", 
    "state": "/invoices" 
} 

public class MenuValidator implements Validator { 

    /** The menu service. */ 
    private MenuService service; 

    public MenuValidator(MenuService service) { 
     this.service = service; 
    } 

    @Override 
    public boolean supports(Class<?> objectClass) { 
     return objectClass.equals(Module.class); 
    } 

    @Override 
    public void validate(Object object, Errors errors) { 

     try { 
      String name = ((Module) object).getName()); 
      if(name==null){ 
       errors.rejectValue("name", "name.null","The module name is null"); 
      } 
    ... 
} 

しかし、私は複雑な構造を持っていると私はすべてのフィールドを検証する必要がある場合、これは、とてもトリッキーです:私はこのようなバリデータを作成し、この入ってくるJSONを検証するために

。フィールドごとにフィールドを検証せずに構造を検証するオプションはありますか?

+0

ただ、あなたにポインタを与えるためにあなたが入力要求が一般的なものであれば、JSONスキーマを作成し、JSONスキーマを使用してクライアント側の検証を行うことができます。 https://davidwalsh.name/json-validationをチェックしてください。 –

答えて

0

いいえ、私はそのような検証のための他の選択肢はないと思います。各プロパティを手動で確認する必要があります。

おかげ

関連する問題