View Javadoc

1   /*
2    * $Id: ELDefinitionTag.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.DefinitionTag;
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:definition>, which defines a tiles
30   * (or template / component). Definition is put in requested context and can
31   * be used in &lt;tiles:insert&gt. <p> This class is a subclass of the class
32   * <code>org.apache.struts.taglib.tiles.DefinitionTag</code> which provides
33   * most of the described functionality.  This subclass allows all attribute
34   * values to be specified as expressions utilizing the JavaServer Pages
35   * Standard Library expression language.
36   *
37   * @version $Rev: 471754 $
38   */
39  public class ELDefinitionTag extends DefinitionTag {
40      /**
41       * Instance variable mapped to "id" tag attribute. (Mapping set in
42       * associated BeanInfo class.)
43       */
44      private String idExpr;
45  
46      /**
47       * Instance variable mapped to "scope" tag attribute. (Mapping set in
48       * associated BeanInfo class.)
49       */
50      private String scopeExpr;
51  
52      /**
53       * Instance variable mapped to "template" tag attribute. (Mapping set in
54       * associated BeanInfo class.)
55       */
56      private String templateExpr;
57  
58      /**
59       * Instance variable mapped to "page" tag attribute. (Mapping set in
60       * associated BeanInfo class.)
61       */
62      private String pageExpr;
63  
64      /**
65       * Instance variable mapped to "role" tag attribute. (Mapping set in
66       * associated BeanInfo class.)
67       */
68      private String roleExpr;
69  
70      /**
71       * Instance variable mapped to "extends" tag attribute. (Mapping set in
72       * associated BeanInfo class.)
73       */
74      private String extendsExpr;
75  
76      /**
77       * Getter method for "id" tag attribute. (Mapping set in associated
78       * BeanInfo class.)
79       */
80      public String getIdExpr() {
81          return (idExpr);
82      }
83  
84      /**
85       * Getter method for "scope" tag attribute. (Mapping set in associated
86       * BeanInfo class.)
87       */
88      public String getScopeExpr() {
89          return (scopeExpr);
90      }
91  
92      /**
93       * Getter method for "template" tag attribute. (Mapping set in associated
94       * BeanInfo class.)
95       */
96      public String getTemplateExpr() {
97          return (templateExpr);
98      }
99  
100     /**
101      * Getter method for "page" tag attribute. (Mapping set in associated
102      * BeanInfo class.)
103      */
104     public String getPageExpr() {
105         return (pageExpr);
106     }
107 
108     /**
109      * Getter method for "role" tag attribute. (Mapping set in associated
110      * BeanInfo class.)
111      */
112     public String getRoleExpr() {
113         return (roleExpr);
114     }
115 
116     /**
117      * Getter method for "extends" tag attribute. (Mapping set in associated
118      * BeanInfo class.)
119      */
120     public String getExtendsExpr() {
121         return (extendsExpr);
122     }
123 
124     /**
125      * Setter method for "id" tag attribute. (Mapping set in associated
126      * BeanInfo class.)
127      */
128     public void setIdExpr(String idExpr) {
129         this.idExpr = idExpr;
130     }
131 
132     /**
133      * Setter method for "scope" tag attribute. (Mapping set in associated
134      * BeanInfo class.)
135      */
136     public void setScopeExpr(String scopeExpr) {
137         this.scopeExpr = scopeExpr;
138     }
139 
140     /**
141      * Setter method for "template" tag attribute. (Mapping set in associated
142      * BeanInfo class.)
143      */
144     public void setTemplateExpr(String templateExpr) {
145         this.templateExpr = templateExpr;
146     }
147 
148     /**
149      * Setter method for "page" tag attribute. (Mapping set in associated
150      * BeanInfo class.)
151      */
152     public void setPageExpr(String pageExpr) {
153         this.pageExpr = pageExpr;
154     }
155 
156     /**
157      * Setter method for "role" tag attribute. (Mapping set in associated
158      * BeanInfo class.)
159      */
160     public void setRoleExpr(String roleExpr) {
161         this.roleExpr = roleExpr;
162     }
163 
164     /**
165      * Setter method for "extends" tag attribute. (Mapping set in associated
166      * BeanInfo class.)
167      */
168     public void setExtendsExpr(String extendsExpr) {
169         this.extendsExpr = extendsExpr;
170     }
171 
172     /**
173      * Resets attribute values for tag reuse.
174      */
175     public void release() {
176         super.release();
177         setIdExpr(null);
178         setScopeExpr(null);
179         setTemplateExpr(null);
180         setPageExpr(null);
181         setRoleExpr(null);
182         setExtendsExpr(null);
183     }
184 
185     /**
186      * Process the start tag.
187      *
188      * @throws JspException if a JSP exception has occurred
189      */
190     public int doStartTag() throws JspException {
191         evaluateExpressions();
192 
193         return (super.doStartTag());
194     }
195 
196     /**
197      * Processes all attribute values which use the JSTL expression evaluation
198      * engine to determine their values.
199      *
200      * @throws JspException if a JSP exception has occurred
201      */
202     private void evaluateExpressions()
203         throws JspException {
204         String string = null;
205 
206         if ((string =
207                 EvalHelper.evalString("id", getIdExpr(), this, pageContext)) != null) {
208             setId(string);
209         }
210 
211         if ((string =
212                 EvalHelper.evalString("scope", getScopeExpr(), this, pageContext)) != null) {
213             setScope(string);
214         }
215 
216         if ((string =
217                 EvalHelper.evalString("template", getTemplateExpr(), this,
218                     pageContext)) != null) {
219             setTemplate(string);
220         }
221 
222         if ((string =
223                 EvalHelper.evalString("page", getPageExpr(), this, pageContext)) != null) {
224             setPage(string);
225         }
226 
227         if ((string =
228                 EvalHelper.evalString("role", getRoleExpr(), this, pageContext)) != null) {
229             setRole(string);
230         }
231 
232         if ((string =
233                 EvalHelper.evalString("extends", getExtendsExpr(), this,
234                     pageContext)) != null) {
235             setExtends(string);
236         }
237     }
238 }