Glassfish BeanValidator 基礎編 の続き
package com.mycompany.beanvalidatorexam; import java.io.Serializable; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import javax.validation.constraints.*; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; @Data @NoArgsConstructor @ToString public class ExamBean implements Serializable { /** * True かどうか検証する. * @AssertTrue、@AssertFalse、@Null は、通常単独では使わない。 * group と一緒に使い、特定の場合には true/false/null になることを検証する */ @AssertTrue private boolean agree; /** * 数値の大小・桁数検証. * BigDecimal のほかに int、String の検証も可能. */ @DecimalMax(value = "100", message = "価格は、{value} 以下にしてください") @DecimalMin(value = "0", message = "{priceMin}") @Digits(integer = 3, fraction = 2) @NotNull private BigDecimal price; /** * 数値の大小検証. * int のほかに String の検証が可能. */ @Max(value = 500) @Min(value = 0) @NotNull private int amount; /** * 文字列長の検証. * String#length() のほかに Collection#size() の検証もできる. */ @Size(min = 0, max = 255) @NotNull private String item; /** * 正規表現の検証. */ @Pattern(regexp = "[0-9]+[.][A-Z]") @NotNull private String code; /** * Annotationは、getterにつけてもよい */ private String payDateString; /** * 未来日検証. * Date、Calendar の検証ができる * @Future のほかに @Past で過去日かどうかを検証することができる。 * どっちも実際には使わないだろーけど * @return 支払日 */ @Future @NotNull public Date getPayDate() { try { return (new SimpleDateFormat("yyyy-MM-dd").parse(this.payDateString)); } catch (ParseException | NullPointerException ex) { ex.printStackTrace(); return null; } } }
priceMin=価格は、{value} 以上にしてください