@Target(value=METHOD)
@Retention(value=RUNTIME)
@Published
public @interface ValidationTarget
本アノテーションでは階層構造に応じて、3つの使い方を提供する。
public class ExampleForm {
// 子Formのプロパティを追加する。
private User user;
public ExampleForm(Map params) {
user = (User) params.get("user");
}
// 子Formを設定するセッタに、本アノテーションを設定する。
@ValidationTarget
public void setUser(User user) {
this.user = user;
}
// getterは省略
}
public class ExampleForm {
// Form のプロパティに配列を追加する。
private Address[] addressArray;
public ExampleForm(Map params) {
addressArray = (Address[]) params.get("addressArray");
}
// getterは省略
// 固定の配列長をValidationTarget.size()属性に設定する。
@ValidationTarget(size = 3)
public void setAddressArray(Address[] addressArray) {
this.addressArray = addressArray;
}
}
ValidationTarget.sizeKey()を使用し、可変長項目をリクエストパラメータで送る必要がある。
public class ExampleForm {
// Formのプロパティに配列長を表すプロパティを追加する。
private Address[] addressArray;
private Integer addressArraySize;
public ExampleForm(Map params) {
addressArray = (Address[]) params.get("addressArray");
addressArraySize = (Integer) params.get("addressArraySize");
}
// getterは省略
@Digits(integer=1)
@Required
@PropertyName("Address配列長")
public void setAddressArraySize(Integer addressArraySize) {
this.addressArraySize = addressArraySize;
}
// Form の配列のセッタに @ValidationTarget を設定する。
// @ValidationTarget のValidationTarget.sizeKey()属性に、配列長を表すプロパティ名を設定する。
@ValidationTarget(sizeKey="addressArraySize")
public void setAddressArray(Address[] addressArray) {
this.addressArray = addressArray;
}
}