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