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.html;
22
23 import org.apache.struts.taglib.html.OptionsTag;
24 import org.apache.strutsel.taglib.utils.EvalHelper;
25
26 import javax.servlet.jsp.JspException;
27
28 /**
29 * Tag for creating multiple <select> options from a collection. The
30 * associated values displayed to the user may optionally be specified by a
31 * second collection, or will be the same as the values themselves. Each
32 * collection may be an array of objects, a Collection, an Enumeration, an
33 * Iterator, or a Map. <b>NOTE</b> - This tag requires a Java2 (JDK 1.2 or
34 * later) platform. <p> This class is a subclass of the class
35 * <code>org.apache.struts.taglib.html.OptionsTag</code> which provides most
36 * of the described functionality. This subclass allows all attribute values
37 * to be specified as expressions utilizing the JavaServer Pages Standard
38 * Library expression language.
39 *
40 * @version $Rev: 471754 $
41 */
42 public class ELOptionsTag extends OptionsTag {
43 /**
44 * Instance variable mapped to "collection" tag attribute. (Mapping set in
45 * associated BeanInfo class.)
46 */
47 private String collectionExpr;
48
49 /**
50 * Instance variable mapped to "filter" tag attribute. (Mapping set in
51 * associated BeanInfo class.)
52 */
53 private String filterExpr;
54
55 /**
56 * Instance variable mapped to "labelName" tag attribute. (Mapping set in
57 * associated BeanInfo class.)
58 */
59 private String labelNameExpr;
60
61 /**
62 * Instance variable mapped to "labelProperty" tag attribute. (Mapping set
63 * in associated BeanInfo class.)
64 */
65 private String labelPropertyExpr;
66
67 /**
68 * Instance variable mapped to "name" tag attribute. (Mapping set in
69 * associated BeanInfo class.)
70 */
71 private String nameExpr;
72
73 /**
74 * Instance variable mapped to "property" tag attribute. (Mapping set in
75 * associated BeanInfo class.)
76 */
77 private String propertyExpr;
78
79 /**
80 * Instance variable mapped to "style" tag attribute. (Mapping set in
81 * associated BeanInfo class.)
82 */
83 private String styleExpr;
84
85 /**
86 * Instance variable mapped to "styleClass" tag attribute. (Mapping set in
87 * associated BeanInfo class.)
88 */
89 private String styleClassExpr;
90
91 /**
92 * Getter method for "collection" tag attribute. (Mapping set in
93 * associated BeanInfo class.)
94 */
95 public String getCollectionExpr() {
96 return (collectionExpr);
97 }
98
99 /**
100 * Getter method for "filter" tag attribute. (Mapping set in associated
101 * BeanInfo class.)
102 */
103 public String getFilterExpr() {
104 return (filterExpr);
105 }
106
107 /**
108 * Getter method for "labelName" tag attribute. (Mapping set in associated
109 * BeanInfo class.)
110 */
111 public String getLabelNameExpr() {
112 return (labelNameExpr);
113 }
114
115 /**
116 * Getter method for "labelProperty" tag attribute. (Mapping set in
117 * associated BeanInfo class.)
118 */
119 public String getLabelPropertyExpr() {
120 return (labelPropertyExpr);
121 }
122
123 /**
124 * Getter method for "name" tag attribute. (Mapping set in associated
125 * BeanInfo class.)
126 */
127 public String getNameExpr() {
128 return (nameExpr);
129 }
130
131 /**
132 * Getter method for "property" tag attribute. (Mapping set in associated
133 * BeanInfo class.)
134 */
135 public String getPropertyExpr() {
136 return (propertyExpr);
137 }
138
139 /**
140 * Getter method for "style" tag attribute. (Mapping set in associated
141 * BeanInfo class.)
142 */
143 public String getStyleExpr() {
144 return (styleExpr);
145 }
146
147 /**
148 * Getter method for "styleClass" tag attribute. (Mapping set in
149 * associated BeanInfo class.)
150 */
151 public String getStyleClassExpr() {
152 return (styleClassExpr);
153 }
154
155 /**
156 * Setter method for "collection" tag attribute. (Mapping set in
157 * associated BeanInfo class.)
158 */
159 public void setCollectionExpr(String collectionExpr) {
160 this.collectionExpr = collectionExpr;
161 }
162
163 /**
164 * Setter method for "filter" tag attribute. (Mapping set in associated
165 * BeanInfo class.)
166 */
167 public void setFilterExpr(String filterExpr) {
168 this.filterExpr = filterExpr;
169 }
170
171 /**
172 * Setter method for "labelName" tag attribute. (Mapping set in associated
173 * BeanInfo class.)
174 */
175 public void setLabelNameExpr(String labelNameExpr) {
176 this.labelNameExpr = labelNameExpr;
177 }
178
179 /**
180 * Setter method for "labelProperty" tag attribute. (Mapping set in
181 * associated BeanInfo class.)
182 */
183 public void setLabelPropertyExpr(String labelPropertyExpr) {
184 this.labelPropertyExpr = labelPropertyExpr;
185 }
186
187 /**
188 * Setter method for "name" tag attribute. (Mapping set in associated
189 * BeanInfo class.)
190 */
191 public void setNameExpr(String nameExpr) {
192 this.nameExpr = nameExpr;
193 }
194
195 /**
196 * Setter method for "property" tag attribute. (Mapping set in associated
197 * BeanInfo class.)
198 */
199 public void setPropertyExpr(String propertyExpr) {
200 this.propertyExpr = propertyExpr;
201 }
202
203 /**
204 * Setter method for "style" tag attribute. (Mapping set in associated
205 * BeanInfo class.)
206 */
207 public void setStyleExpr(String styleExpr) {
208 this.styleExpr = styleExpr;
209 }
210
211 /**
212 * Setter method for "styleClass" tag attribute. (Mapping set in
213 * associated BeanInfo class.)
214 */
215 public void setStyleClassExpr(String styleClassExpr) {
216 this.styleClassExpr = styleClassExpr;
217 }
218
219 /**
220 * Resets attribute values for tag reuse.
221 */
222 public void release() {
223 super.release();
224 setCollectionExpr(null);
225 setFilterExpr(null);
226 setLabelNameExpr(null);
227 setLabelPropertyExpr(null);
228 setNameExpr(null);
229 setPropertyExpr(null);
230 setStyleExpr(null);
231 setStyleClassExpr(null);
232 }
233
234 /**
235 * Process the start tag.
236 *
237 * @throws JspException if a JSP exception has occurred
238 */
239 public int doStartTag() throws JspException {
240 evaluateExpressions();
241
242 return (super.doStartTag());
243 }
244
245 /**
246 * Processes all attribute values which use the JSTL expression evaluation
247 * engine to determine their values.
248 *
249 * @throws JspException if a JSP exception has occurred
250 */
251 private void evaluateExpressions()
252 throws JspException {
253 String string = null;
254 Boolean bool = null;
255
256 if ((string =
257 EvalHelper.evalString("collection", getCollectionExpr(), this,
258 pageContext)) != null) {
259 setCollection(string);
260 }
261
262 if ((bool =
263 EvalHelper.evalBoolean("filter", getFilterExpr(), this,
264 pageContext)) != null) {
265 setFilter(bool.booleanValue());
266 }
267
268 if ((string =
269 EvalHelper.evalString("labelName", getLabelNameExpr(), this,
270 pageContext)) != null) {
271 setLabelName(string);
272 }
273
274 if ((string =
275 EvalHelper.evalString("labelProperty", getLabelPropertyExpr(),
276 this, pageContext)) != null) {
277 setLabelProperty(string);
278 }
279
280 if ((string =
281 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) {
282 setName(string);
283 }
284
285 if ((string =
286 EvalHelper.evalString("property", getPropertyExpr(), this,
287 pageContext)) != null) {
288 setProperty(string);
289 }
290
291 if ((string =
292 EvalHelper.evalString("style", getStyleExpr(), this, pageContext)) != null) {
293 setStyle(string);
294 }
295
296 if ((string =
297 EvalHelper.evalString("styleClass", getStyleClassExpr(), this,
298 pageContext)) != null) {
299 setStyleClass(string);
300 }
301
302
303
304
305
306
307
308 }
309 }