
nablarch.core.validation.ValidationTarget Maven / Gradle / Ivy
The newest version!
package nablarch.core.validation;
import nablarch.core.util.annotation.Published;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 階層構造を持つFormをバリデーションすることを表すアノテーション。
*
* 本アノテーションでは階層構造に応じて、3つの使い方を提供する。
*
* -
* Formの親子関係が1対1の場合
*
* -
* Formの親子関係が1対多で、子の数が固定の場合
*
* -
* Formの親子関係が1対多で、子の数が可変の場合
*
*
*
* Formの親子関係が1対1の場合の例を以下に示す。
*
* public class ExampleForm {
*
* // 子Formのプロパティを追加する。
* private User user;
*
* public ExampleForm(Map params) {
* user = (User) params.get("user");
* }
*
* // 子Formを設定するセッタに、本アノテーションを設定する。
* {@code @ValidationTarget}
* public void setUser(User user) {
* this.user = user;
* }
*
* // getterは省略
*
* }
*
*
* Formの親子関係が1対多で、子の数が固定の場合の例を以下に示す。
*
* public class ExampleForm {
*
* // Form のプロパティに配列を追加する。
* private Address[] addressArray;
*
* public ExampleForm(Map params) {
* addressArray = (Address[]) params.get("addressArray");
* }
*
* // getterは省略
*
* // 固定の配列長を{@link #size()}属性に設定する。
* {@code @ValidationTarget(size = 3)}
* public void setAddressArray(Address[] addressArray) {
* this.addressArray = addressArray;
* }
* }
*
*
* Formの親子関係が1対多で、子の数が可変の場合の例を以下に示す。
* ※子の数が可変の場合は、{@link #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は省略
*
* {@code @Digits(integer=1)}
* {@code @Required}
* {@code @PropertyName("Address配列長")}
* public void setAddressArraySize(Integer addressArraySize) {
* this.addressArraySize = addressArraySize;
* }
*
* // Form の配列のセッタに @ValidationTarget を設定する。
* // @ValidationTarget の{@link #sizeKey()}属性に、配列長を表すプロパティ名を設定する。
* {@code @ValidationTarget(sizeKey="addressArraySize")}
* public void setAddressArray(Address[] addressArray) {
* this.addressArray = addressArray;
* }
* }
*
*
* @author Koichi Asano
*
*/
@ConversionFormat
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Published
public @interface ValidationTarget {
/** 配列のサイズ */
int size() default 0;
/** 可変長配列のサイズ */
String sizeKey() default "";
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy