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 <tiles:insert>. <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 }