1 18 package org.apache.beehive.netui.tags.databinding.message; 19 20 import org.apache.beehive.netui.tags.AbstractClassicTag; 21 22 import javax.servlet.jsp.JspException ; 23 import javax.servlet.jsp.tagext.SimpleTagSupport ; 24 import java.util.ArrayList ; 25 import java.util.List ; 26 27 107 public class Message 108 extends AbstractClassicTag { 109 110 public static final String MESSAGE_ARG_KEY = "netui_bundleMessageArguments"; 111 112 private String _resultId = null; 113 private Object _value = null; 114 private List _argList = null; 115 116 public String getTagName() { 117 return "Message"; 118 } 119 120 132 public void setResultId(String resultId) { 133 _resultId = resultId; 134 } 135 136 159 public void setValue(Object value) { 160 _value = value; 161 } 162 163 public int doStartTag() { 164 return EVAL_BODY_BUFFERED; 165 } 166 167 public int doEndTag() 168 throws JspException { 169 Object [] args = (_argList != null ? _argList.toArray() : null); 170 171 if(hasErrors()) { 172 reportErrors(); 173 localRelease(); 174 return EVAL_PAGE; 175 } 176 177 if(_value == null) { 178 localRelease(); 179 return EVAL_PAGE; 180 } 181 182 Object exprVal = null; 183 try { 184 exprVal = java.text.MessageFormat.format(_value.toString(), args); 185 } 186 catch(Exception e) { 187 String msg = "Error formatting message \"" + _value.toString() + "\". Cause: " + e.getLocalizedMessage(); 188 registerTagError(msg, null); 189 } 190 191 if(hasErrors()) { 192 reportErrors(); 193 localRelease(); 194 return EVAL_PAGE; 195 } 196 197 Message msgParent = null; 198 if((msgParent = (Message)SimpleTagSupport.findAncestorWithClass(this, Message.class)) != null) { 200 msgParent.addMessageArgument(exprVal); 201 } 202 else 203 pageContext.setAttribute(_resultId, exprVal); 204 205 localRelease(); 206 return EVAL_PAGE; 207 } 208 209 public void addMessageArgument(Object messageArgument) { 210 if(_argList == null) 211 _argList = new ArrayList (); 212 213 _argList.add(messageArgument); 214 } 215 216 protected void localRelease() { 217 super.localRelease(); 218 _argList = null; 219 _value = null; 220 _resultId = null; 221 } 222 } 223 | Popular Tags |