1 /* 2 * $Id: ELErrorsTag.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.html; 22 23 import org.apache.struts.taglib.html.ErrorsTag; 24 import org.apache.strutsel.taglib.utils.EvalHelper; 25 26 import javax.servlet.jsp.JspException; 27 28 /** 29 * <p>Custom tag that renders error messages if an appropriate request 30 * attribute has been created. The tag looks for a request attribute with a 31 * reserved key, and assumes that it is either a String, a String array, 32 * containing message keys to be looked up in the module's MessageResources, 33 * or an object of type <code>org.apache.struts.action.ActionErrors</code>. 34 * <p> The following optional message keys will be utilized if corresponding 35 * messages exist for them in the application resources:</p> 36 * 37 * <ul> 38 * 39 * <li><b>errors.header</b> - If present, the corresponding message will be 40 * rendered prior to the individual list of error messages.</li> 41 * 42 * <li><b>errors.footer</b> - If present, the corresponding message will be 43 * rendered following the individual list of error messages.</li> 44 * 45 * <li><b>errors.prefix</b> - If present, the corresponding message will be 46 * rendered before each individual error message.</li> 47 * 48 * <li><b>errors.suffix</b> - If present, the corresponding message will be 49 * rendered after each individual error message.</li> 50 * 51 * </ul> 52 * 53 * <p> This class is a subclass of the class <code>org.apache.struts.taglib.html.ErrorsTag</code> 54 * which provides most of the described functionality. This subclass allows 55 * all attribute values to be specified as expressions utilizing the 56 * JavaServer Pages Standard Library expression language. 57 * 58 * @version $Rev: 471754 $ 59 */ 60 public class ELErrorsTag extends ErrorsTag { 61 /** 62 * Instance variable mapped to "bundle" tag attribute. (Mapping set in 63 * associated BeanInfo class.) 64 */ 65 private String bundleExpr; 66 67 /** 68 * Instance variable mapped to "footer" tag attribute. (Mapping set in 69 * associated BeanInfo class.) 70 */ 71 private String footerExpr; 72 73 /** 74 * Instance variable mapped to "header" tag attribute. (Mapping set in 75 * associated BeanInfo class.) 76 */ 77 private String headerExpr; 78 79 /** 80 * Instance variable mapped to "locale" tag attribute. (Mapping set in 81 * associated BeanInfo class.) 82 */ 83 private String localeExpr; 84 85 /** 86 * Instance variable mapped to "name" tag attribute. (Mapping set in 87 * associated BeanInfo class.) 88 */ 89 private String nameExpr; 90 91 /** 92 * Instance variable mapped to "prefix" tag attribute. (Mapping set in 93 * associated BeanInfo class.) 94 */ 95 private String prefixExpr; 96 97 /** 98 * Instance variable mapped to "property" tag attribute. (Mapping set in 99 * associated BeanInfo class.) 100 */ 101 private String propertyExpr; 102 103 /** 104 * Instance variable mapped to "suffix" tag attribute. (Mapping set in 105 * associated BeanInfo class.) 106 */ 107 private String suffixExpr; 108 109 /** 110 * Getter method for "bundle" tag attribute. (Mapping set in associated 111 * BeanInfo class.) 112 */ 113 public String getBundleExpr() { 114 return (bundleExpr); 115 } 116 117 /** 118 * Getter method for "footer" tag attribute. (Mapping set in associated 119 * BeanInfo class.) 120 */ 121 public String getFooterExpr() { 122 return (footerExpr); 123 } 124 125 /** 126 * Getter method for "header" tag attribute. (Mapping set in associated 127 * BeanInfo class.) 128 */ 129 public String getHeaderExpr() { 130 return (headerExpr); 131 } 132 133 /** 134 * Getter method for "locale" tag attribute. (Mapping set in associated 135 * BeanInfo class.) 136 */ 137 public String getLocaleExpr() { 138 return (localeExpr); 139 } 140 141 /** 142 * Getter method for "name" tag attribute. (Mapping set in associated 143 * BeanInfo class.) 144 */ 145 public String getNameExpr() { 146 return (nameExpr); 147 } 148 149 /** 150 * Getter method for "prefix" tag attribute. (Mapping set in associated 151 * BeanInfo class.) 152 */ 153 public String getPrefixExpr() { 154 return (prefixExpr); 155 } 156 157 /** 158 * Getter method for "property" tag attribute. (Mapping set in associated 159 * BeanInfo class.) 160 */ 161 public String getPropertyExpr() { 162 return (propertyExpr); 163 } 164 165 /** 166 * Getter method for "suffix" tag attribute. (Mapping set in associated 167 * BeanInfo class.) 168 */ 169 public String getSuffixExpr() { 170 return (suffixExpr); 171 } 172 173 /** 174 * Setter method for "bundle" tag attribute. (Mapping set in associated 175 * BeanInfo class.) 176 */ 177 public void setBundleExpr(String bundleExpr) { 178 this.bundleExpr = bundleExpr; 179 } 180 181 /** 182 * Setter method for "footer" tag attribute. (Mapping set in associated 183 * BeanInfo class.) 184 */ 185 public void setFooterExpr(String footerExpr) { 186 this.footerExpr = footerExpr; 187 } 188 189 /** 190 * Setter method for "header" tag attribute. (Mapping set in associated 191 * BeanInfo class.) 192 */ 193 public void setHeaderExpr(String headerExpr) { 194 this.headerExpr = headerExpr; 195 } 196 197 /** 198 * Setter method for "locale" tag attribute. (Mapping set in associated 199 * BeanInfo class.) 200 */ 201 public void setLocaleExpr(String localeExpr) { 202 this.localeExpr = localeExpr; 203 } 204 205 /** 206 * Setter method for "name" tag attribute. (Mapping set in associated 207 * BeanInfo class.) 208 */ 209 public void setNameExpr(String nameExpr) { 210 this.nameExpr = nameExpr; 211 } 212 213 /** 214 * Setter method for "prefix" tag attribute. (Mapping set in associated 215 * BeanInfo class.) 216 */ 217 public void setPrefixExpr(String prefixExpr) { 218 this.prefixExpr = prefixExpr; 219 } 220 221 /** 222 * Setter method for "property" tag attribute. (Mapping set in associated 223 * BeanInfo class.) 224 */ 225 public void setPropertyExpr(String propertyExpr) { 226 this.propertyExpr = propertyExpr; 227 } 228 229 /** 230 * Setter method for "suffix" tag attribute. (Mapping set in associated 231 * BeanInfo class.) 232 */ 233 public void setSuffixExpr(String suffixExpr) { 234 this.suffixExpr = suffixExpr; 235 } 236 237 /** 238 * Resets attribute values for tag reuse. 239 */ 240 public void release() { 241 super.release(); 242 setBundleExpr(null); 243 setFooterExpr(null); 244 setHeaderExpr(null); 245 setLocaleExpr(null); 246 setNameExpr(null); 247 setPrefixExpr(null); 248 setPropertyExpr(null); 249 setSuffixExpr(null); 250 } 251 252 /** 253 * Process the start tag. 254 * 255 * @throws JspException if a JSP exception has occurred 256 */ 257 public int doStartTag() throws JspException { 258 evaluateExpressions(); 259 260 return (super.doStartTag()); 261 } 262 263 /** 264 * Processes all attribute values which use the JSTL expression evaluation 265 * engine to determine their values. 266 * 267 * @throws JspException if a JSP exception has occurred 268 */ 269 private void evaluateExpressions() 270 throws JspException { 271 String string = null; 272 273 if ((string = 274 EvalHelper.evalString("bundle", getBundleExpr(), this, 275 pageContext)) != null) { 276 setBundle(string); 277 } 278 279 if ((string = 280 EvalHelper.evalString("footer", getFooterExpr(), this, 281 pageContext)) != null) { 282 setFooter(string); 283 } 284 285 if ((string = 286 EvalHelper.evalString("header", getHeaderExpr(), this, 287 pageContext)) != null) { 288 setHeader(string); 289 } 290 291 if ((string = 292 EvalHelper.evalString("locale", getLocaleExpr(), this, 293 pageContext)) != null) { 294 setLocale(string); 295 } 296 297 if ((string = 298 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) { 299 setName(string); 300 } 301 302 if ((string = 303 EvalHelper.evalString("prefix", getPrefixExpr(), this, 304 pageContext)) != null) { 305 setPrefix(string); 306 } 307 308 if ((string = 309 EvalHelper.evalString("property", getPropertyExpr(), this, 310 pageContext)) != null) { 311 setProperty(string); 312 } 313 314 if ((string = 315 EvalHelper.evalString("suffix", getSuffixExpr(), this, 316 pageContext)) != null) { 317 setSuffix(string); 318 } 319 } 320 }