View Javadoc

1   /*
2    * $Id: ELRedirectTag.java 471754 2006-11-06 14:55:09Z husted $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  package org.apache.strutsel.taglib.logic;
22  
23  import org.apache.struts.taglib.logic.RedirectTag;
24  import org.apache.strutsel.taglib.utils.EvalHelper;
25  
26  import javax.servlet.jsp.JspException;
27  
28  /**
29   * Generate a URL-encoded redirect to the specified URI. <p> This class is a
30   * subclass of the class <code>org.apache.struts.taglib.logic.RedirectTag</code>
31   * which provides most of the described functionality.  This subclass allows
32   * all attribute values to be specified as expressions utilizing the
33   * JavaServer Pages Standard Library expression language.
34   *
35   * @version $Rev: 471754 $
36   */
37  public class ELRedirectTag extends RedirectTag {
38      /**
39       * Instance variable mapped to "action" tag attribute. (Mapping set in
40       * associated BeanInfo class.)
41       */
42      private String actionExpr;
43  
44      /**
45       * Instance variable mapped to "anchor" tag attribute. (Mapping set in
46       * associated BeanInfo class.)
47       */
48      private String anchorExpr;
49  
50      /**
51       * Instance variable mapped to "forward" tag attribute. (Mapping set in
52       * associated BeanInfo class.)
53       */
54      private String forwardExpr;
55  
56      /**
57       * Instance variable mapped to "href" tag attribute. (Mapping set in
58       * associated BeanInfo class.)
59       */
60      private String hrefExpr;
61  
62      /**
63       * Instance variable mapped to "name" tag attribute. (Mapping set in
64       * associated BeanInfo class.)
65       */
66      private String nameExpr;
67  
68      /**
69       * Instance variable mapped to "page" tag attribute. (Mapping set in
70       * associated BeanInfo class.)
71       */
72      private String pageExpr;
73  
74      /**
75       * Instance variable mapped to "paramId" tag attribute. (Mapping set in
76       * associated BeanInfo class.)
77       */
78      private String paramIdExpr;
79  
80      /**
81       * Instance variable mapped to "paramName" tag attribute. (Mapping set in
82       * associated BeanInfo class.)
83       */
84      private String paramNameExpr;
85  
86      /**
87       * Instance variable mapped to "paramProperty" tag attribute. (Mapping set
88       * in associated BeanInfo class.)
89       */
90      private String paramPropertyExpr;
91  
92      /**
93       * Instance variable mapped to "paramScope" tag attribute. (Mapping set in
94       * associated BeanInfo class.)
95       */
96      private String paramScopeExpr;
97  
98      /**
99       * Instance variable mapped to "property" tag attribute. (Mapping set in
100      * associated BeanInfo class.)
101      */
102     private String propertyExpr;
103 
104     /**
105      * Instance variable mapped to "scope" tag attribute. (Mapping set in
106      * associated BeanInfo class.)
107      */
108     private String scopeExpr;
109 
110     /**
111      * Instance variable mapped to "transaction" tag attribute. (Mapping set
112      * in associated BeanInfo class.)
113      */
114     private String transactionExpr;
115 
116     /**
117      * Instance variable mapped to "useLocalEncoding" tag attribute. (Mapping
118      * set in associated BeanInfo class.)
119      */
120     private String useLocalEncodingExpr;
121 
122     /**
123      * Getter method for "action" tag attribute. (Mapping set in associated
124      * BeanInfo class.)
125      */
126     public String getActionExpr() {
127         return (actionExpr);
128     }
129 
130     /**
131      * Getter method for "anchor" tag attribute. (Mapping set in associated
132      * BeanInfo class.)
133      */
134     public String getAnchorExpr() {
135         return (anchorExpr);
136     }
137 
138     /**
139      * Getter method for "forward" tag attribute. (Mapping set in associated
140      * BeanInfo class.)
141      */
142     public String getForwardExpr() {
143         return (forwardExpr);
144     }
145 
146     /**
147      * Getter method for "href" tag attribute. (Mapping set in associated
148      * BeanInfo class.)
149      */
150     public String getHrefExpr() {
151         return (hrefExpr);
152     }
153 
154     /**
155      * Getter method for "name" tag attribute. (Mapping set in associated
156      * BeanInfo class.)
157      */
158     public String getNameExpr() {
159         return (nameExpr);
160     }
161 
162     /**
163      * Getter method for "page" tag attribute. (Mapping set in associated
164      * BeanInfo class.)
165      */
166     public String getPageExpr() {
167         return (pageExpr);
168     }
169 
170     /**
171      * Getter method for "paramId" tag attribute. (Mapping set in associated
172      * BeanInfo class.)
173      */
174     public String getParamIdExpr() {
175         return (paramIdExpr);
176     }
177 
178     /**
179      * Getter method for "paramName" tag attribute. (Mapping set in associated
180      * BeanInfo class.)
181      */
182     public String getParamNameExpr() {
183         return (paramNameExpr);
184     }
185 
186     /**
187      * Getter method for "paramProperty" tag attribute. (Mapping set in
188      * associated BeanInfo class.)
189      */
190     public String getParamPropertyExpr() {
191         return (paramPropertyExpr);
192     }
193 
194     /**
195      * Getter method for "paramScope" tag attribute. (Mapping set in
196      * associated BeanInfo class.)
197      */
198     public String getParamScopeExpr() {
199         return (paramScopeExpr);
200     }
201 
202     /**
203      * Getter method for "property" tag attribute. (Mapping set in associated
204      * BeanInfo class.)
205      */
206     public String getPropertyExpr() {
207         return (propertyExpr);
208     }
209 
210     /**
211      * Getter method for "scope" tag attribute. (Mapping set in associated
212      * BeanInfo class.)
213      */
214     public String getScopeExpr() {
215         return (scopeExpr);
216     }
217 
218     /**
219      * Getter method for "transaction" tag attribute. (Mapping set in
220      * associated BeanInfo class.)
221      */
222     public String getTransactionExpr() {
223         return (transactionExpr);
224     }
225 
226     /**
227      * Getter method for "useLocalEncoding" tag attribute. (Mapping set in
228      * associated BeanInfo class.)
229      */
230     public String getUseLocalEncodingExpr() {
231         return (useLocalEncodingExpr);
232     }
233 
234     /**
235      * Setter method for "action" tag attribute. (Mapping set in associated
236      * BeanInfo class.)
237      */
238     public void setActionExpr(String actionExpr) {
239         this.actionExpr = actionExpr;
240     }
241 
242     /**
243      * Setter method for "anchor" tag attribute. (Mapping set in associated
244      * BeanInfo class.)
245      */
246     public void setAnchorExpr(String anchorExpr) {
247         this.anchorExpr = anchorExpr;
248     }
249 
250     /**
251      * Setter method for "forward" tag attribute. (Mapping set in associated
252      * BeanInfo class.)
253      */
254     public void setForwardExpr(String forwardExpr) {
255         this.forwardExpr = forwardExpr;
256     }
257 
258     /**
259      * Setter method for "href" tag attribute. (Mapping set in associated
260      * BeanInfo class.)
261      */
262     public void setHrefExpr(String hrefExpr) {
263         this.hrefExpr = hrefExpr;
264     }
265 
266     /**
267      * Setter method for "name" tag attribute. (Mapping set in associated
268      * BeanInfo class.)
269      */
270     public void setNameExpr(String nameExpr) {
271         this.nameExpr = nameExpr;
272     }
273 
274     /**
275      * Setter method for "page" tag attribute. (Mapping set in associated
276      * BeanInfo class.)
277      */
278     public void setPageExpr(String pageExpr) {
279         this.pageExpr = pageExpr;
280     }
281 
282     /**
283      * Setter method for "paramId" tag attribute. (Mapping set in associated
284      * BeanInfo class.)
285      */
286     public void setParamIdExpr(String paramIdExpr) {
287         this.paramIdExpr = paramIdExpr;
288     }
289 
290     /**
291      * Setter method for "paramName" tag attribute. (Mapping set in associated
292      * BeanInfo class.)
293      */
294     public void setParamNameExpr(String paramNameExpr) {
295         this.paramNameExpr = paramNameExpr;
296     }
297 
298     /**
299      * Setter method for "paramProperty" tag attribute. (Mapping set in
300      * associated BeanInfo class.)
301      */
302     public void setParamPropertyExpr(String paramPropertyExpr) {
303         this.paramPropertyExpr = paramPropertyExpr;
304     }
305 
306     /**
307      * Setter method for "paramScope" tag attribute. (Mapping set in
308      * associated BeanInfo class.)
309      */
310     public void setParamScopeExpr(String paramScopeExpr) {
311         this.paramScopeExpr = paramScopeExpr;
312     }
313 
314     /**
315      * Setter method for "property" tag attribute. (Mapping set in associated
316      * BeanInfo class.)
317      */
318     public void setPropertyExpr(String propertyExpr) {
319         this.propertyExpr = propertyExpr;
320     }
321 
322     /**
323      * Setter method for "scope" tag attribute. (Mapping set in associated
324      * BeanInfo class.)
325      */
326     public void setScopeExpr(String scopeExpr) {
327         this.scopeExpr = scopeExpr;
328     }
329 
330     /**
331      * Setter method for "transaction" tag attribute. (Mapping set in
332      * associated BeanInfo class.)
333      */
334     public void setTransactionExpr(String transactionExpr) {
335         this.transactionExpr = transactionExpr;
336     }
337 
338     /**
339      * Setter method for "useLocalEncoding" tag attribute. (Mapping set in
340      * associated BeanInfo class.)
341      */
342     public void setUseLocalEncodingExpr(String useLocalEncodingExpr) {
343         this.useLocalEncodingExpr = useLocalEncodingExpr;
344     }
345 
346     /**
347      * Resets attribute values for tag reuse.
348      */
349     public void release() {
350         super.release();
351         setActionExpr(null);
352         setAnchorExpr(null);
353         setForwardExpr(null);
354         setHrefExpr(null);
355         setNameExpr(null);
356         setPageExpr(null);
357         setParamIdExpr(null);
358         setParamNameExpr(null);
359         setParamPropertyExpr(null);
360         setParamScopeExpr(null);
361         setPropertyExpr(null);
362         setScopeExpr(null);
363         setTransactionExpr(null);
364         setUseLocalEncodingExpr(null);
365     }
366 
367     /**
368      * Process the start tag.
369      *
370      * @throws JspException if a JSP exception has occurred
371      */
372     public int doStartTag() throws JspException {
373         evaluateExpressions();
374 
375         return (super.doStartTag());
376     }
377 
378     /**
379      * Processes all attribute values which use the JSTL expression evaluation
380      * engine to determine their values.
381      *
382      * @throws JspException if a JSP exception has occurred
383      */
384     private void evaluateExpressions()
385         throws JspException {
386         String string = null;
387         Boolean bool = null;
388 
389         if ((string =
390                 EvalHelper.evalString("action", getActionExpr(), this,
391                     pageContext)) != null) {
392             setAction(string);
393         }
394 
395         if ((string =
396                 EvalHelper.evalString("anchor", getAnchorExpr(), this,
397                     pageContext)) != null) {
398             setAnchor(string);
399         }
400 
401         if ((string =
402                 EvalHelper.evalString("forward", getForwardExpr(), this,
403                     pageContext)) != null) {
404             setForward(string);
405         }
406 
407         if ((string =
408                 EvalHelper.evalString("href", getHrefExpr(), this, pageContext)) != null) {
409             setHref(string);
410         }
411 
412         if ((string =
413                 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) {
414             setName(string);
415         }
416 
417         if ((string =
418                 EvalHelper.evalString("page", getPageExpr(), this, pageContext)) != null) {
419             setPage(string);
420         }
421 
422         if ((string =
423                 EvalHelper.evalString("paramId", getParamIdExpr(), this,
424                     pageContext)) != null) {
425             setParamId(string);
426         }
427 
428         if ((string =
429                 EvalHelper.evalString("paramName", getParamNameExpr(), this,
430                     pageContext)) != null) {
431             setParamName(string);
432         }
433 
434         if ((string =
435                 EvalHelper.evalString("paramProperty", getParamPropertyExpr(),
436                     this, pageContext)) != null) {
437             setParamProperty(string);
438         }
439 
440         if ((string =
441                 EvalHelper.evalString("paramScope", getParamScopeExpr(), this,
442                     pageContext)) != null) {
443             setParamScope(string);
444         }
445 
446         if ((string =
447                 EvalHelper.evalString("property", getPropertyExpr(), this,
448                     pageContext)) != null) {
449             setProperty(string);
450         }
451 
452         if ((string =
453                 EvalHelper.evalString("scope", getScopeExpr(), this, pageContext)) != null) {
454             setScope(string);
455         }
456 
457         if ((bool =
458                 EvalHelper.evalBoolean("transaction", getTransactionExpr(),
459                     this, pageContext)) != null) {
460             setTransaction(bool.booleanValue());
461         }
462 
463         if ((bool =
464                 EvalHelper.evalBoolean("useLocalEncoding",
465                     getUseLocalEncodingExpr(), this, pageContext)) != null) {
466             setUseLocalEncoding(bool.booleanValue());
467         }
468     }
469 }