1 18 19 package org.apache.struts.taglib.html; 20 21 import java.util.Iterator ; 22 import java.util.Locale ; 23 24 import javax.servlet.jsp.JspException ; 25 import javax.servlet.jsp.tagext.TagSupport ; 26 27 import org.apache.struts.Globals; 28 import org.apache.struts.action.ActionMessage; 29 import org.apache.struts.action.ActionMessages; 30 import org.apache.struts.taglib.TagUtils; 31 import org.apache.struts.util.MessageResources; 32 33 55 public class ErrorsTag extends TagSupport { 56 57 59 62 protected String bundle = null; 63 64 public String getBundle() { 65 return (this.bundle); 66 } 67 68 public void setBundle(String bundle) { 69 this.bundle = bundle; 70 } 71 72 76 protected static Locale defaultLocale = Locale.getDefault(); 77 78 82 protected static String lineEnd = System.getProperty("line.separator"); 83 84 87 protected String locale = Globals.LOCALE_KEY; 88 89 public String getLocale() { 90 return (this.locale); 91 } 92 93 public void setLocale(String locale) { 94 this.locale = locale; 95 } 96 97 100 protected static MessageResources messages = 101 MessageResources.getMessageResources(Constants.Package + ".LocalStrings"); 102 103 106 protected String name = Globals.ERROR_KEY; 107 108 public String getName() { 109 return (this.name); 110 } 111 112 public void setName(String name) { 113 this.name = name; 114 } 115 116 120 protected String property = null; 121 122 public String getProperty() { 123 return (this.property); 124 } 125 126 public void setProperty(String property) { 127 this.property = property; 128 } 129 130 133 protected String header = null; 134 135 public String getHeader() { 136 return header == null ? "errors.header" : header; 137 } 138 139 public void setHeader(String header) { 140 this.header = header; 141 } 142 143 146 protected String footer = null; 147 148 public String getFooter() { 149 return footer == null ? "errors.footer" : footer; 150 } 151 152 public void setFooter(String footer) { 153 this.footer = footer; 154 } 155 156 159 protected String prefix= null; 160 161 public String getPrefix() { 162 return prefix == null ? "errors.prefix" : prefix; 163 } 164 165 public void setPrefix(String prefix) { 166 this.prefix= prefix; 167 } 168 169 172 protected String suffix= null; 173 174 public String getSuffix() { 175 return suffix == null ? "errors.suffix" : suffix; 176 } 177 178 public void setSuffix(String suffix) { 179 this.suffix= suffix; 180 } 181 182 184 189 public int doStartTag() throws JspException { 190 191 ActionMessages errors = null; 193 try { 194 errors = TagUtils.getInstance().getActionMessages(pageContext, name); 195 } catch (JspException e) { 196 TagUtils.getInstance().saveException(pageContext, e); 197 throw e; 198 } 199 200 if ((errors == null) || errors.isEmpty()) { 201 return (EVAL_BODY_INCLUDE); 202 } 203 204 boolean headerPresent = 205 TagUtils.getInstance().present(pageContext, bundle, locale, getHeader()); 206 207 boolean footerPresent = 208 TagUtils.getInstance().present(pageContext, bundle, locale, getFooter()); 209 210 boolean prefixPresent = 211 TagUtils.getInstance().present(pageContext, bundle, locale, getPrefix()); 212 213 boolean suffixPresent = 214 TagUtils.getInstance().present(pageContext, bundle, locale, getSuffix()); 215 216 StringBuffer results = new StringBuffer (); 218 boolean headerDone = false; 219 String message = null; 220 Iterator reports = (property == null) ? errors.get() : errors.get(property); 221 222 while (reports.hasNext()) { 223 ActionMessage report = (ActionMessage) reports.next(); 224 if (!headerDone) { 225 if (headerPresent) { 226 message = 227 TagUtils.getInstance().message( 228 pageContext, 229 bundle, 230 locale, 231 getHeader()); 232 233 results.append(message); 234 } 235 headerDone = true; 236 } 237 238 if (prefixPresent) { 239 message = 240 TagUtils.getInstance().message( 241 pageContext, 242 bundle, 243 locale, 244 getPrefix()); 245 results.append(message); 246 } 247 248 if (report.isResource()) { 249 message = 250 TagUtils.getInstance().message( 251 pageContext, 252 bundle, 253 locale, 254 report.getKey(), 255 report.getValues()); 256 } else { 257 message = report.getKey(); 258 } 259 260 if (message != null) { 261 results.append(message); 262 } 263 264 if (suffixPresent) { 265 message = 266 TagUtils.getInstance().message( 267 pageContext, 268 bundle, 269 locale, 270 getSuffix()); 271 results.append(message); 272 } 273 } 274 275 if (headerDone && footerPresent) { 276 message = 277 TagUtils.getInstance().message(pageContext, bundle, locale, getFooter()); 278 results.append(message); 279 } 280 281 TagUtils.getInstance().write(pageContext, results.toString()); 282 283 return (EVAL_BODY_INCLUDE); 284 285 } 286 287 290 public void release() { 291 super.release(); 292 bundle = Globals.MESSAGES_KEY; 293 locale = Globals.LOCALE_KEY; 294 name = Globals.ERROR_KEY; 295 property = null; 296 header = null; 297 footer = null; 298 prefix = null; 299 suffix = null; 300 } 301 302 } 303 | Popular Tags |