1 /* 2 * $Id: ELUseAttributeTag.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.UseAttributeTag; 24 import org.apache.strutsel.taglib.utils.EvalHelper; 25 26 import javax.servlet.jsp.JspException; 27 28 /** 29 * Custom tag exposing a component attribute to page. <p> This class is a 30 * subclass of the class <code>org.apache.struts.taglib.tiles.UseAttributeTag</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 ELUseAttributeTag extends UseAttributeTag { 38 /** 39 * Instance variable mapped to "id" tag attribute. (Mapping set in 40 * associated BeanInfo class.) 41 */ 42 private String idExpr; 43 44 /** 45 * Instance variable mapped to "classname" tag attribute. (Mapping set in 46 * associated BeanInfo class.) 47 */ 48 private String classnameExpr; 49 50 /** 51 * Instance variable mapped to "scope" tag attribute. (Mapping set in 52 * associated BeanInfo class.) 53 */ 54 private String scopeExpr; 55 56 /** 57 * Instance variable mapped to "name" tag attribute. (Mapping set in 58 * associated BeanInfo class.) 59 */ 60 private String nameExpr; 61 62 /** 63 * Instance variable mapped to "ignore" tag attribute. (Mapping set in 64 * associated BeanInfo class.) 65 */ 66 private String ignoreExpr; 67 68 /** 69 * Getter method for "id" tag attribute. (Mapping set in associated 70 * BeanInfo class.) 71 */ 72 public String getIdExpr() { 73 return (idExpr); 74 } 75 76 /** 77 * Getter method for "classname" tag attribute. (Mapping set in associated 78 * BeanInfo class.) 79 */ 80 public String getClassnameExpr() { 81 return (classnameExpr); 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 "name" tag attribute. (Mapping set in associated 94 * BeanInfo class.) 95 */ 96 public String getNameExpr() { 97 return (nameExpr); 98 } 99 100 /** 101 * Getter method for "ignore" tag attribute. (Mapping set in associated 102 * BeanInfo class.) 103 */ 104 public String getIgnoreExpr() { 105 return (ignoreExpr); 106 } 107 108 /** 109 * Setter method for "id" tag attribute. (Mapping set in associated 110 * BeanInfo class.) 111 */ 112 public void setIdExpr(String idExpr) { 113 this.idExpr = idExpr; 114 } 115 116 /** 117 * Setter method for "classname" tag attribute. (Mapping set in associated 118 * BeanInfo class.) 119 */ 120 public void setClassnameExpr(String classnameExpr) { 121 this.classnameExpr = classnameExpr; 122 } 123 124 /** 125 * Setter method for "scope" tag attribute. (Mapping set in associated 126 * BeanInfo class.) 127 */ 128 public void setScopeExpr(String scopeExpr) { 129 this.scopeExpr = scopeExpr; 130 } 131 132 /** 133 * Setter method for "name" tag attribute. (Mapping set in associated 134 * BeanInfo class.) 135 */ 136 public void setNameExpr(String nameExpr) { 137 this.nameExpr = nameExpr; 138 } 139 140 /** 141 * Setter method for "ignore" tag attribute. (Mapping set in associated 142 * BeanInfo class.) 143 */ 144 public void setIgnoreExpr(String ignoreExpr) { 145 this.ignoreExpr = ignoreExpr; 146 } 147 148 /** 149 * Resets attribute values for tag reuse. 150 */ 151 public void release() { 152 super.release(); 153 setIdExpr(null); 154 setClassnameExpr(null); 155 setScopeExpr(null); 156 setNameExpr(null); 157 setIgnoreExpr(null); 158 } 159 160 /** 161 * Process the start tag. 162 * 163 * @throws JspException if a JSP exception has occurred 164 */ 165 public int doStartTag() throws JspException { 166 evaluateExpressions(); 167 168 return (super.doStartTag()); 169 } 170 171 /** 172 * Processes all attribute values which use the JSTL expression evaluation 173 * engine to determine their values. 174 * 175 * @throws JspException if a JSP exception has occurred 176 */ 177 private void evaluateExpressions() 178 throws JspException { 179 String string = null; 180 Boolean bool = null; 181 182 if ((string = 183 EvalHelper.evalString("id", getIdExpr(), this, pageContext)) != null) { 184 setId(string); 185 } 186 187 if ((string = 188 EvalHelper.evalString("classname", getClassnameExpr(), this, 189 pageContext)) != null) { 190 setClassname(string); 191 } 192 193 if ((string = 194 EvalHelper.evalString("scope", getScopeExpr(), this, pageContext)) != null) { 195 setScope(string); 196 } 197 198 if ((string = 199 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) { 200 setName(string); 201 } 202 203 if ((bool = 204 EvalHelper.evalBoolean("ignore", getIgnoreExpr(), this, 205 pageContext)) != null) { 206 setIgnore(bool.booleanValue()); 207 } 208 } 209 }