1 /*
2 * $Id: ELGetAttributeTag.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.GetAttributeTag;
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.GetAttributeTag</code> which provides
38 * most of the described functionality. This subclass allows all attribute
39 * values to be specified as expressions utilizing the JavaServer Pages
40 * Standard Library expression language.
41 *
42 * @version $Rev: 471754 $
43 */
44 public class ELGetAttributeTag extends GetAttributeTag {
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 "role" tag attribute. (Mapping set in
59 * associated BeanInfo class.)
60 */
61 private String roleExpr;
62
63 /**
64 * Getter method for "name" tag attribute. (Mapping set in associated
65 * BeanInfo class.)
66 */
67 public String getNameExpr() {
68 return (nameExpr);
69 }
70
71 /**
72 * Getter method for "ignore" tag attribute. (Mapping set in associated
73 * BeanInfo class.)
74 */
75 public String getIgnoreExpr() {
76 return (ignoreExpr);
77 }
78
79 /**
80 * Getter method for "role" tag attribute. (Mapping set in associated
81 * BeanInfo class.)
82 */
83 public String getRoleExpr() {
84 return (roleExpr);
85 }
86
87 /**
88 * Setter method for "name" tag attribute. (Mapping set in associated
89 * BeanInfo class.)
90 */
91 public void setNameExpr(String nameExpr) {
92 this.nameExpr = nameExpr;
93 }
94
95 /**
96 * Setter method for "ignore" tag attribute. (Mapping set in associated
97 * BeanInfo class.)
98 */
99 public void setIgnoreExpr(String ignoreExpr) {
100 this.ignoreExpr = ignoreExpr;
101 }
102
103 /**
104 * Setter method for "role" tag attribute. (Mapping set in associated
105 * BeanInfo class.)
106 */
107 public void setRoleExpr(String roleExpr) {
108 this.roleExpr = roleExpr;
109 }
110
111 /**
112 * Resets attribute values for tag reuse.
113 */
114 public void release() {
115 super.release();
116 setNameExpr(null);
117 setIgnoreExpr(null);
118 setRoleExpr(null);
119 }
120
121 /**
122 * Process the start tag.
123 *
124 * @throws JspException if a JSP exception has occurred
125 */
126 public int doStartTag() throws JspException {
127 evaluateExpressions();
128
129 return (super.doStartTag());
130 }
131
132 /**
133 * Processes all attribute values which use the JSTL expression evaluation
134 * engine to determine their values.
135 *
136 * @throws JspException if a JSP exception has occurred
137 */
138 private void evaluateExpressions()
139 throws JspException {
140 String string = null;
141 Boolean bool = null;
142
143 if ((string =
144 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) {
145 setName(string);
146 }
147
148 if ((bool =
149 EvalHelper.evalBoolean("ignore", getIgnoreExpr(), this,
150 pageContext)) != null) {
151 setIgnore(bool.booleanValue());
152 }
153
154 if ((string =
155 EvalHelper.evalString("role", getRoleExpr(), this, pageContext)) != null) {
156 setRole(string);
157 }
158 }
159 }