質問編集履歴

1

sss

2020/10/26 02:06

投稿

kanekoK
kanekoK

スコア11

test CHANGED
@@ -1 +1 @@
1
- @アノテーションのコードの処理がわからない
1
+ 独自のバリデーションを作って入力チェックをする。
test CHANGED
@@ -25,3 +25,103 @@
25
25
 
26
26
 
27
27
  教えて頂きたいです。
28
+
29
+
30
+
31
+ 上記は実行しておりませんが、コードがわからなかったため、質問しました。
32
+
33
+ 上記コードは下記のコードのように独自のバリデーションのソースだったのですが、
34
+
35
+ 下記のコードのように独自のバリデーションを作成したいです。
36
+
37
+ 「年齢」の制限を規定したい場合、@Constraint(validatedBy = {「年齢」の制限を規定するクラス})を作成し、
38
+
39
+ @Constraintで実行したいクラスを呼び出す流れでまちがいないでしょうか?
40
+
41
+
42
+
43
+ ```Java
44
+
45
+ 「年齢」の制限を規定する@Ageアノテーションの実装例
46
+
47
+
48
+
49
+ package com.example.sample.domain.validation;
50
+
51
+
52
+
53
+ import java.lang.annotation.Documented;
54
+
55
+ import java.lang.annotation.Retention;
56
+
57
+ import java.lang.annotation.Target;
58
+
59
+ import javax.validation.Constraint;
60
+
61
+ import javax.validation.Payload;
62
+
63
+ import javax.validation.ReportAsSingleViolation;
64
+
65
+ import javax.validation.constraints.Max;
66
+
67
+ import javax.validation.constraints.Min;
68
+
69
+
70
+
71
+ import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
72
+
73
+ import static java.lang.annotation.ElementType.CONSTRUCTOR;
74
+
75
+ import static java.lang.annotation.ElementType.FIELD;
76
+
77
+ import static java.lang.annotation.ElementType.METHOD;
78
+
79
+ import static java.lang.annotation.ElementType.PARAMETER;
80
+
81
+ import static java.lang.annotation.RetentionPolicy.RUNTIME;
82
+
83
+
84
+
85
+ @Documented
86
+
87
+ @Constraint(validatedBy = {})
88
+
89
+ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
90
+
91
+ @Retention(RUNTIME)
92
+
93
+ @ReportAsSingleViolation
94
+
95
+ @Min(1)
96
+
97
+ @Max(150)
98
+
99
+ public @interface Age {
100
+
101
+ String message() default "{com.example.sample.domain.validation.Age.message}";
102
+
103
+
104
+
105
+ Class<?>[] groups() default {};
106
+
107
+
108
+
109
+ Class<? extends Payload>[] payload() default {};
110
+
111
+
112
+
113
+ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
114
+
115
+ @Retention(RUNTIME)
116
+
117
+ @Documented
118
+
119
+ public @interface List {
120
+
121
+ Age[] value();
122
+
123
+ }
124
+
125
+ }
126
+
127
+ ```