1 19 20 21 package com.sslexplorer.core.tags; 22 23 import javax.servlet.jsp.JspException ; 24 25 import org.apache.struts.Globals; 26 import org.apache.struts.action.ActionMessage; 27 import org.apache.struts.action.ActionMessages; 28 import org.apache.struts.taglib.TagUtils; 29 import org.apache.struts.taglib.html.MessagesTag; 30 31 import com.sslexplorer.core.BundleActionMessage; 32 33 43 public class BundleMessagesTag extends MessagesTag { 44 45 48 public int doStartTag() throws JspException { 49 processed = false; 50 ActionMessages messages = null; 51 String name = this.name; 52 if (message != null && "true".equalsIgnoreCase(message)) { 53 name = Globals.MESSAGE_KEY; 54 } 55 try { 56 messages = TagUtils.getInstance().getActionMessages(pageContext, name); 57 } catch (JspException e) { 58 TagUtils.getInstance().saveException(pageContext, e); 59 throw e; 60 } 61 this.iterator = (property == null) ? messages.get() : messages.get(property); 62 if (!this.iterator.hasNext()) { 63 return SKIP_BODY; 64 } 65 ActionMessage report = (ActionMessage) this.iterator.next(); 66 String actualBundle = report instanceof BundleActionMessage ? ((BundleActionMessage)report).getBundle() :bundle; 67 String msg = 68 TagUtils.getInstance().message( 69 pageContext, 70 actualBundle, 71 locale, 72 report.getKey(), 73 report.getValues()); 74 if (msg == null) { 75 pageContext.setAttribute(id, "Could not locate resource with key " + report.getKey() + " in bundle " + actualBundle ); 76 } else { 77 pageContext.setAttribute(id, msg); 78 } 79 if (header != null && header.length() > 0) { 80 String headerMessage = 81 TagUtils.getInstance().message(pageContext, bundle, locale, header); 82 83 if (headerMessage != null) { 84 TagUtils.getInstance().write(pageContext, headerMessage); 85 } 86 } 87 processed = true; 88 return (EVAL_BODY_BUFFERED); 89 } 90 91 94 public int doAfterBody() throws JspException { 95 if (bodyContent != null) { 96 TagUtils.getInstance().writePrevious(pageContext, bodyContent.getString()); 97 bodyContent.clearBody(); 98 } 99 if (iterator.hasNext()) { 100 ActionMessage report = (ActionMessage) iterator.next(); 101 String msg = 102 TagUtils.getInstance().message( 103 pageContext, 104 report instanceof BundleActionMessage ? ((BundleActionMessage)report).getBundle() :bundle, 105 locale, 106 report.getKey(), 107 report.getValues()); 108 109 if (msg == null) { 110 pageContext.removeAttribute(id); 111 } else { 112 pageContext.setAttribute(id, msg); 113 } 114 115 return (EVAL_BODY_BUFFERED); 116 } else { 117 return (SKIP_BODY); 118 } 119 120 } 121 } 122 | Popular Tags |