This repository was archived by the owner on Jan 28, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 101
Expand file tree
/
Copy pathbean-validation-advanced003.html
More file actions
190 lines (177 loc) · 6.56 KB
/
bean-validation-advanced003.html
File metadata and controls
190 lines (177 loc) · 6.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Grouping Constraints</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/style.css" rel="stylesheet">
<script src="https://use.fontawesome.com/96c4d89611.js"></script>
</head>
<body>
<table id="doc-title" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top">
<b>Java Platform, Enterprise Edition (Java EE) 8</b><br />
<b>The Java EE Tutorial</b>
<!-- <p class="beta">Beta Draft (Pre-General Availability)</p> -->
</td>
</tr>
</table>
<hr />
<table width="90%" id="top-nav" cellspacing="0" cellpadding="0">
<colgroup>
<col width="12%"/>
<col width="12%"/>
<col width="*"/>
</colgroup>
<tr>
<td align="left">
<a href="bean-validation-advanced002.html">
<span class="vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
<span style="position:relative;top:-2px;">Previous</span>
</a>
</td>
<td align="left">
<a href="bean-validation-advanced004.html">
<span class=" vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
<span style="position:relative;top:-2px;">Next</span>
</a>
</td>
<td align="right">
<a href="toc.html">
<span class=" vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
<span style="position:relative;top:-2px;">Contents</span>
</a>
</td>
</tr>
</table>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p><a id="GKAGV"></a><a id="grouping-constraints"></a></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_grouping_constraints">Grouping Constraints</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Constraints may be added to one or more groups. Constraint groups are
used to create subsets of constraints so that only certain constraints
will be validated for a particular object. By default, all constraints
are included in the <code>Default</code> constraint group.</p>
</div>
<div class="paragraph">
<p>Constraint groups are represented by interfaces.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-oac_no_warn" data-lang="oac_no_warn">public interface Employee {}
public interface Contractor {}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Constraint groups can inherit from other groups.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-oac_no_warn" data-lang="oac_no_warn">public interface Manager extends Employee {}</code></pre>
</div>
</div>
<div class="paragraph">
<p>When a constraint is added to an element, the constraint declares the
groups to which that constraint belongs by specifying the class name of
the group interface name in the <code>groups</code> element of the constraint.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-oac_no_warn" data-lang="oac_no_warn">@NotNull(groups=Employee.class)
Phone workPhone;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Multiple groups can be declared by surrounding the groups with braces
(<code>{</code> and <code>}</code>) and separating the groups' class names with commas.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-oac_no_warn" data-lang="oac_no_warn">@NotNull(groups={ Employee.class, Contractor.class })
Phone workPhone;</code></pre>
</div>
</div>
<div class="paragraph">
<p>If a group inherits from another group, validating that group results in
validating all constraints declared as part of the supergroup. For
example, validating the <code>Manager</code> group results in the <code>workPhone</code> field
being validated, because <code>Employee</code> is a superinterface of <code>Manager</code>.</p>
</div>
<div class="paragraph">
<p><a id="GKAGU"></a><a id="customizing-group-validation-order"></a></p>
</div>
<div class="sect2">
<h3 id="_customizing_group_validation_order">Customizing Group Validation Order</h3>
<div class="paragraph">
<p>By default, constraint groups are validated in no particular order.
There are cases in which some groups should be validated before others.
For example, in a particular class, basic data should be validated
before more advanced data.</p>
</div>
<div class="paragraph">
<p>To set the validation order for a group, add a
<code>javax.validation.GroupSequence</code> annotation to the interface definition,
listing the order in which the validation should occur.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-oac_no_warn" data-lang="oac_no_warn">@GroupSequence({Default.class, ExpensiveValidationGroup.class})
public interface FullValidationGroup {}</code></pre>
</div>
</div>
<div class="paragraph">
<p>When validating <code>FullValidationGroup</code>, first the <code>Default</code> group is
validated. If all the data passes validation, then the
<code>ExpensiveValidationGroup</code> group is validated. If a constraint is part
of both the <code>Default</code> and the <code>ExpensiveValidationGroup</code> groups, the
constraint is validated as part of the <code>Default</code> group and will not be
validated on the subsequent <code>ExpensiveValidationGroup</code> pass.</p>
</div>
</div>
</div>
</div>
<hr />
<table width="90%" id="bottom-nav" cellspacing="0" cellpadding="0">
<colgroup>
<col width="12%"/>
<col width="12%"/>
<col width="*"/>
</colgroup>
<tr>
<td align="left">
<a href="bean-validation-advanced002.html">
<span class=" vector-font"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></span>
<span style="position:relative;top:-2px;">Previous</span>
</a>
</td>
<td align="left">
<a href="bean-validation-advanced004.html">
<span class="vector-font"><i class="fa fa-arrow-circle-right vector-font" aria-hidden="true"></i></span>
<span style="position:relative;top:-2px;">Next</span>
</a>
</td>
<td align="right">
<a href="toc.html">
<span class="vector-font"><i class="fa fa-list vector-font" aria-hidden="true"></i></span>
<span style="position:relative;top:-2px;">Contents</span>
</a>
</td>
</tr>
</table>
<span id="copyright">
<a href="img/cpyr.adoc">
<img src="img/oracle.gif" height="10px" alt="Oracle Logo" />
<span>Copyright © 2017, Oracle and/or its affiliates. All rights reserved.</span>
</a>
</span>
<!--<p align="center" class="beta">Beta Draft (Pre-General Availability)</p> -->
</body>
</html>