1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.strutsel.taglib.logic;
22
23 import org.apache.struts.taglib.logic.IterateTag;
24 import org.apache.strutsel.taglib.utils.EvalHelper;
25
26 import javax.servlet.jsp.JspException;
27
28 /**
29 * Custom tag that iterates the elements of a collection, which can be either
30 * an attribute or the property of an attribute. The collection can be any of
31 * the following: an array of objects, an Enumeration, an Iterator, a
32 * Collection (which includes Lists, Sets and Vectors), or a Map (which
33 * includes Hashtables) whose elements will be iterated over. <p> This class
34 * is a subclass of the class <code>org.apache.struts.taglib.logic.IterateTag</code>
35 * which provides most of the described functionality. This subclass allows
36 * all attribute values to be specified as expressions utilizing the
37 * JavaServer Pages Standard Library expression language.
38 *
39 * @version $Rev: 471754 $
40 */
41 public class ELIterateTag extends IterateTag {
42 /**
43 * Instance variable mapped to "collection" tag attribute. (Mapping set in
44 * associated BeanInfo class.)
45 */
46 private String collectionExpr;
47
48 /**
49 * Instance variable mapped to "id" tag attribute. (Mapping set in
50 * associated BeanInfo class.)
51 */
52 private String idExpr;
53
54 /**
55 * Instance variable mapped to "indexId" tag attribute. (Mapping set in
56 * associated BeanInfo class.)
57 */
58 private String indexIdExpr;
59
60 /**
61 * Instance variable mapped to "length" tag attribute. (Mapping set in
62 * associated BeanInfo class.)
63 */
64 private String lengthExpr;
65
66 /**
67 * Instance variable mapped to "name" tag attribute. (Mapping set in
68 * associated BeanInfo class.)
69 */
70 private String nameExpr;
71
72 /**
73 * Instance variable mapped to "offset" tag attribute. (Mapping set in
74 * associated BeanInfo class.)
75 */
76 private String offsetExpr;
77
78 /**
79 * Instance variable mapped to "property" tag attribute. (Mapping set in
80 * associated BeanInfo class.)
81 */
82 private String propertyExpr;
83
84 /**
85 * Instance variable mapped to "scope" tag attribute. (Mapping set in
86 * associated BeanInfo class.)
87 */
88 private String scopeExpr;
89
90 /**
91 * Instance variable mapped to "type" tag attribute. (Mapping set in
92 * associated BeanInfo class.)
93 */
94 private String typeExpr;
95
96 /**
97 * Getter method for "collection" tag attribute. (Mapping set in
98 * associated BeanInfo class.)
99 */
100 public String getCollectionExpr() {
101 return (collectionExpr);
102 }
103
104 /**
105 * Getter method for "id" tag attribute. (Mapping set in associated
106 * BeanInfo class.)
107 */
108 public String getIdExpr() {
109 return (idExpr);
110 }
111
112 /**
113 * Getter method for "indexId" tag attribute. (Mapping set in associated
114 * BeanInfo class.)
115 */
116 public String getIndexIdExpr() {
117 return (indexIdExpr);
118 }
119
120 /**
121 * Getter method for "length" tag attribute. (Mapping set in associated
122 * BeanInfo class.)
123 */
124 public String getLengthExpr() {
125 return (lengthExpr);
126 }
127
128 /**
129 * Getter method for "name" tag attribute. (Mapping set in associated
130 * BeanInfo class.)
131 */
132 public String getNameExpr() {
133 return (nameExpr);
134 }
135
136 /**
137 * Getter method for "offset" tag attribute. (Mapping set in associated
138 * BeanInfo class.)
139 */
140 public String getOffsetExpr() {
141 return (offsetExpr);
142 }
143
144 /**
145 * Getter method for "property" tag attribute. (Mapping set in associated
146 * BeanInfo class.)
147 */
148 public String getPropertyExpr() {
149 return (propertyExpr);
150 }
151
152 /**
153 * Getter method for "scope" tag attribute. (Mapping set in associated
154 * BeanInfo class.)
155 */
156 public String getScopeExpr() {
157 return (scopeExpr);
158 }
159
160 /**
161 * Getter method for "type" tag attribute. (Mapping set in associated
162 * BeanInfo class.)
163 */
164 public String getTypeExpr() {
165 return (typeExpr);
166 }
167
168 /**
169 * Setter method for "collection" tag attribute. (Mapping set in
170 * associated BeanInfo class.)
171 */
172 public void setCollectionExpr(String collectionExpr) {
173 this.collectionExpr = collectionExpr;
174 }
175
176 /**
177 * Setter method for "id" tag attribute. (Mapping set in associated
178 * BeanInfo class.)
179 */
180 public void setIdExpr(String idExpr) {
181 this.idExpr = idExpr;
182 }
183
184 /**
185 * Setter method for "indexId" tag attribute. (Mapping set in associated
186 * BeanInfo class.)
187 */
188 public void setIndexIdExpr(String indexIdExpr) {
189 this.indexIdExpr = indexIdExpr;
190 }
191
192 /**
193 * Setter method for "length" tag attribute. (Mapping set in associated
194 * BeanInfo class.)
195 */
196 public void setLengthExpr(String lengthExpr) {
197 this.lengthExpr = lengthExpr;
198 }
199
200 /**
201 * Setter method for "name" tag attribute. (Mapping set in associated
202 * BeanInfo class.)
203 */
204 public void setNameExpr(String nameExpr) {
205 this.nameExpr = nameExpr;
206 }
207
208 /**
209 * Setter method for "offset" tag attribute. (Mapping set in associated
210 * BeanInfo class.)
211 */
212 public void setOffsetExpr(String offsetExpr) {
213 this.offsetExpr = offsetExpr;
214 }
215
216 /**
217 * Setter method for "property" tag attribute. (Mapping set in associated
218 * BeanInfo class.)
219 */
220 public void setPropertyExpr(String propertyExpr) {
221 this.propertyExpr = propertyExpr;
222 }
223
224 /**
225 * Setter method for "scope" tag attribute. (Mapping set in associated
226 * BeanInfo class.)
227 */
228 public void setScopeExpr(String scopeExpr) {
229 this.scopeExpr = scopeExpr;
230 }
231
232 /**
233 * Setter method for "type" tag attribute. (Mapping set in associated
234 * BeanInfo class.)
235 */
236 public void setTypeExpr(String typeExpr) {
237 this.typeExpr = typeExpr;
238 }
239
240 /**
241 * Releases state of custom tag so this instance can be reused.
242 */
243 public void release() {
244 super.release();
245 setCollectionExpr(null);
246 setIdExpr(null);
247 setIndexIdExpr(null);
248 setLengthExpr(null);
249 setNameExpr(null);
250 setOffsetExpr(null);
251 setPropertyExpr(null);
252 setScopeExpr(null);
253 setTypeExpr(null);
254 }
255
256 /**
257 * Process the start tag.
258 *
259 * @throws JspException if a JSP exception has occurred
260 */
261 public int doStartTag() throws JspException {
262 evaluateExpressions();
263
264 return (super.doStartTag());
265 }
266
267 /**
268 * Processes all attribute values which use the JSTL expression evaluation
269 * engine to determine their values.
270 *
271 * @throws JspException if a JSP exception has occurred
272 */
273 private void evaluateExpressions()
274 throws JspException {
275 String string = null;
276 Object object = null;
277
278 if ((object =
279 EvalHelper.eval("collection", getCollectionExpr(), this,
280 pageContext)) != null) {
281 setCollection(object);
282 }
283
284 if ((string =
285 EvalHelper.evalString("id", getIdExpr(), this, pageContext)) != null) {
286 setId(string);
287 }
288
289 if ((string =
290 EvalHelper.evalString("indexId", getIndexIdExpr(), this,
291 pageContext)) != null) {
292 setIndexId(string);
293 }
294
295 if ((string =
296 EvalHelper.evalString("length", getLengthExpr(), this,
297 pageContext)) != null) {
298 setLength(string);
299 }
300
301 if ((string =
302 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) {
303 setName(string);
304 }
305
306 if ((string =
307 EvalHelper.evalString("offset", getOffsetExpr(), this,
308 pageContext)) != null) {
309 setOffset(string);
310 }
311
312 if ((string =
313 EvalHelper.evalString("property", getPropertyExpr(), this,
314 pageContext)) != null) {
315 setProperty(string);
316 }
317
318 if ((string =
319 EvalHelper.evalString("scope", getScopeExpr(), this, pageContext)) != null) {
320 setScope(string);
321 }
322
323 if ((string =
324 EvalHelper.evalString("type", getTypeExpr(), this, pageContext)) != null) {
325 setType(string);
326 }
327 }
328 }