これは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 件のコメント:
コメントを投稿