1 18 package org.apache.beehive.netui.tags.html; 19 20 import org.apache.beehive.netui.pageflow.internal.InternalUtils; 21 import org.apache.beehive.netui.tags.ByRef; 22 import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; 23 import org.apache.beehive.netui.tags.rendering.InputFileTag; 24 import org.apache.beehive.netui.tags.rendering.TagRenderingBase; 25 import org.apache.beehive.netui.tags.rendering.WriteRenderAppender; 26 import org.apache.beehive.netui.util.Bundle; 27 28 import javax.servlet.http.HttpServletRequest ; 29 import javax.servlet.jsp.JspException ; 30 31 112 public class FileUpload extends HtmlDataSourceTag 113 { 114 private InputFileTag.State _state = new InputFileTag.State(); 115 116 119 public String getTagName() 120 { 121 return "FileUpload"; 122 } 123 124 132 public void setAttribute(String name, String value, String facet) 133 throws JspException 134 { 135 if (name != null) { 136 if (name.equals(TYPE)) { 137 String s = Bundle.getString("Tags_AttributeMayNotBeSet", new Object []{name}); 138 registerTagError(s, null); 139 } 140 else if (name.equals(READONLY)) { 141 _state.readonly = Boolean.valueOf(value).booleanValue(); 142 return; 143 } 144 } 145 super.setAttribute(name, value, facet); 146 } 147 148 153 protected AbstractHtmlState getState() 154 { 155 return _state; 156 } 157 158 167 public void setAccept(String accept) 168 { 169 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ACCEPT, accept); 170 } 171 172 181 public void setReadonly(boolean readonly) 182 { 183 _state.readonly = readonly; 184 } 185 186 195 public void setSize(String size) 196 { 197 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, SIZE, size); 198 } 199 200 205 public int doStartTag() throws JspException 206 { 207 return EVAL_BODY_BUFFERED; 208 } 209 210 214 public int doEndTag() throws JspException 215 { 216 HttpServletRequest req = (HttpServletRequest ) pageContext.getRequest(); 217 218 if (!InternalUtils.isMultipartHandlingEnabled(req)) { 221 String s = Bundle.getString("Tags_FileMultiOff", null); 222 registerTagError(s, null); 223 return EVAL_PAGE; 224 } 225 226 ByRef ref = new ByRef(); 228 nameHtmlControl(_state, ref); 229 230 if (hasErrors()) 231 return reportAndExit(EVAL_PAGE); 232 233 WriteRenderAppender writer = new WriteRenderAppender(pageContext); 234 TagRenderingBase br = TagRenderingBase.Factory.getRendering(TagRenderingBase.INPUT_FILE_TAG, req); 235 br.doStartTag(writer, _state); 236 237 if (!ref.isNull()) 238 write((String ) ref.getRef()); 239 240 localRelease(); 241 return EVAL_PAGE; 242 } 243 244 247 protected void localRelease() 248 { 249 super.localRelease(); 250 _state.clear(); 251 } 252 } 253 | Popular Tags |