2013-05-10 66 views
1

我使用jsr303驗證用戶輸入。我想知道是否有辦法在默認情況下在類的所有屬性上添加註釋。每個屬性的默認註釋jsr303

例如

public String getName(); 

public String getAddress(); 

public String getEmployerName(); 

public String getEmployerAddress(); 

現在不是註釋所有的人都爲@ NOTNULL/@ NotBlank,我一直在尋找一種方式,如果我可以默認設置跨越其返回字符串的所有屬性此驗證檢查。我正在尋找這樣的東西的唯一原因是,我認爲它更容易忘記把這個註解放在任何屬性上,從而打開一個錯誤。

我真的很感謝你的迴應。

回答

1

我不知道該準備使用的解決方案,但你可以使用Hibernate驗證的API爲programmatic constraint declaration爲了這個目的:

  • 使用反射
  • 確定各個領域/ String類型的干將
  • 對於每個這些字段/獲取者通過API添加所需的約束條件

例如像這樣的領域:

List<Field> stringFields = ...; 

HibernateValidatorConfiguration configuration = Validation 
     .byProvider(HibernateValidator.class) 
     .configure(); 

ConstraintMapping constraintMapping = configuration.createConstraintMapping(); 

for(Field field : stringFields) { 
    constraintMapping 
     .type(MyBean.class) 
     .property(field.getName(), FIELD) 
      .constraint(new NotNullDef()) 
      .constraint(new NotBlankDef()); 
} 

Validator validator = configuration.addMapping(constraintMapping) 
     .buildValidatorFactory() 
     .getValidator();  
+0

對不起,延遲的答覆。奇妙的作品。 – 2013-05-14 17:06:40