View Javadoc

1   /*
2    * $Id: ELGetTag.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.tiles;
22  
23  import org.apache.struts.tiles.taglib.GetTag;
24  import org.apache.strutsel.taglib.utils.EvalHelper;
25  
26  import javax.servlet.jsp.JspException;
27  
28  /**
29   * This is the tag handler for <tiles-el:get>, which gets content from
30   * the request scope and either includes the content or prints it, depending
31   * upon the value of the content's <code>direct</code> attribute. <p> This tag
32   * is intended to be compatible with the same tag from Templates (David
33   * Geary).  Implementation extends InsertTag for facility (no so well). The
34   * only difference is the default value of attribute 'ignore', which is
35   * <code>true</code> for this tag (default behavior of David Geary's
36   * templates). <p> This class is a subclass of the class
37   * <code>org.apache.struts.taglib.tiles.GetTag</code> which provides most of
38   * the described functionality.  This subclass allows all attribute values to
39   * be specified as expressions utilizing the JavaServer Pages Standard Library
40   * expression language.
41   *
42   * @version $Rev: 471754 $
43   */
44  public class ELGetTag extends GetTag {
45      /**
46       * Instance variable mapped to "name" tag attribute. (Mapping set in
47       * associated BeanInfo class.)
48       */
49      private String nameExpr;
50  
51      /**
52       * Instance variable mapped to "ignore" tag attribute. (Mapping set in
53       * associated BeanInfo class.)
54       */
55      private String ignoreExpr;
56  
57      /**
58       * Instance variable mapped to "flush" tag attribute. (Mapping set in
59       * associated BeanInfo class.)
60       */
61      private String flushExpr;
62  
63      /**
64       * Instance variable mapped to "role" tag attribute. (Mapping set in
65       * associated BeanInfo class.)
66       */
67      private String roleExpr;
68  
69      /**
70       * Getter method for "name" tag attribute. (Mapping set in associated
71       * BeanInfo class.)
72       */
73      public String getNameExpr() {
74          return (nameExpr);
75      }
76  
77      /**
78       * Getter method for "ignore" tag attribute. (Mapping set in associated
79       * BeanInfo class.)
80       */
81      public String getIgnoreExpr() {
82          return (ignoreExpr);
83      }
84  
85      /**
86       * Getter method for "flush" tag attribute. (Mapping set in associated
87       * BeanInfo class.)
88       */
89      public String getFlushExpr() {
90          return (flushExpr);
91      }
92  
93      /**
94       * Getter method for "role" tag attribute. (Mapping set in associated
95       * BeanInfo class.)
96       */
97      public String getRoleExpr() {
98          return (roleExpr);
99      }
100 
101     /**
102      * Setter method for "name" tag attribute. (Mapping set in associated
103      * BeanInfo class.)
104      */
105     public void setNameExpr(String nameExpr) {
106         this.nameExpr = nameExpr;
107     }
108 
109     /**
110      * Setter method for "ignore" tag attribute. (Mapping set in associated
111      * BeanInfo class.)
112      */
113     public void setIgnoreExpr(String ignoreExpr) {
114         this.ignoreExpr = ignoreExpr;
115     }
116 
117     /**
118      * Setter method for "flush" tag attribute. (Mapping set in associated
119      * BeanInfo class.)
120      */
121     public void setFlushExpr(String flushExpr) {
122         this.flushExpr = flushExpr;
123     }
124 
125     /**
126      * Setter method for "role" tag attribute. (Mapping set in associated
127      * BeanInfo class.)
128      */
129     public void setRoleExpr(String roleExpr) {
130         this.roleExpr = roleExpr;
131     }
132 
133     /**
134      * Resets attribute values for tag reuse.
135      */
136     public void release() {
137         super.release();
138         setNameExpr(null);
139         setIgnoreExpr(null);
140         setFlushExpr(null);
141         setRoleExpr(null);
142     }
143 
144     /**
145      * Process the start tag.
146      *
147      * @throws JspException if a JSP exception has occurred
148      */
149     public int doStartTag() throws JspException {
150         evaluateExpressions();
151 
152         return (super.doStartTag());
153     }
154 
155     /**
156      * Processes all attribute values which use the JSTL expression evaluation
157      * engine to determine their values.
158      *
159      * @throws JspException if a JSP exception has occurred
160      */
161     private void evaluateExpressions()
162         throws JspException {
163         String string = null;
164         Boolean bool = null;
165 
166         if ((string =
167                 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) {
168             setName(string);
169         }
170 
171         if ((bool =
172                 EvalHelper.evalBoolean("ignore", getIgnoreExpr(), this,
173                     pageContext)) != null) {
174             setIgnore(bool.booleanValue());
175         }
176 
177         if ((string =
178                 EvalHelper.evalString("flush", getFlushExpr(), this, pageContext)) != null) {
179             setFlush(string);
180         }
181 
182         if ((string =
183                 EvalHelper.evalString("role", getRoleExpr(), this, pageContext)) != null) {
184             setRole(string);
185         }
186     }
187 }