これはjax-rsというわけではないが、セットで使うことが多いと思う。
JSR303 bean validationで、文字列の長さ、数値の大きさ、日付、nullなどの値チェックはほとんど可能。
使い方は非常に簡単で、validationしたいクラスのフィールドにアノテーションを設定すればよい。
javax.validation.constraintsには以下のアノテーションが定義されている。
- @AssertFalse,@AssertTrue
- @DecimalMax,@DecimalMin
- @Max,@Min
- @Digits
- @Future,@Past
- @Null,@NotNull
- @Pattern
- @Size
文字列の長さをチェックするには以下のようにする。
public class Employee {
@Size(max=3, message="3桁までですよ!")
private String empId;
private String firstName;
private String LastName;
private String gender;
validationは、インターフェース javax.validation.Validator を使う。
SpringにDIさせるにはbean定義ファイルに以下の設定を行う。
;
実際にvalidationする例は以下の通り
@Service
public class EmployeeService {
@Autowired
private Validator validator;
private void validateEmployee(Employee emp) {
Set<Constraintviolation<Employee>> violations = validator.validate(emp);
for (ConstraintViolation<employee> violation : violations) {
System.out.print(violation.getPropertyPath().toString());
System.out.print(" : ");
System.out.println(violation.getMessage());
}
}
javax.validation.Validator.validate()で、javax.validation.ConstraintViolationのSetが得られる。
ConstraintViolation.getPropertyPath().toString()で、フィールド名が得られる。
ConstraintViolation.getMessage()で、アノテーションで設定したメッセージが得られる。
メッセージをプロパティファイルから得ることもできる(そうすべき)。
デフォルトのプロパティファイル名はValidationMessages.properties 。
public class Employee {
@Size(max=3, message="{emp.id.size}")
private String empId;
0 件のコメント:
コメントを投稿