1 33 34 package com.icesoft.faces.component.inputfile; 35 36 import com.icesoft.faces.context.BridgeFacesContext; 37 import com.icesoft.faces.utils.MessageUtils; 38 import org.apache.commons.fileupload.FileUploadBase; 39 40 import javax.faces.component.UIComponent; 41 import javax.faces.context.FacesContext; 42 import javax.faces.context.ResponseWriter; 43 import javax.faces.render.Renderer; 44 import java.io.IOException ; 45 import java.io.StringWriter ; 46 import java.io.File ; 47 48 public class InputFileRenderer extends Renderer { 49 50 public void encodeBegin(FacesContext context, UIComponent component) throws IOException { 51 InputFile c = (InputFile) component; 52 BridgeFacesContext facesContext = (BridgeFacesContext) context; 53 ResponseWriter writer = context.getResponseWriter(); 54 StringWriter iframeContentWriter = new StringWriter (); 55 c.renderIFrame(iframeContentWriter, facesContext); 56 String pseudoURL = "javascript: document.write('" + iframeContentWriter.toString().replaceAll("\"", "%22") + "'); document.close();"; 57 58 writer.startElement("iframe", c); 59 writer.writeAttribute("src", pseudoURL, null); 60 writer.writeAttribute("class", c.getStyleClass(), null); 61 writer.writeAttribute("style", c.getStyle(), null); 62 writer.writeAttribute("width", c.getWidth() + "px", null); 63 writer.writeAttribute("height", c.getHeight() + "px", null); 64 writer.writeAttribute("title", "Input File Frame", null); 65 writer.writeAttribute("frameborder", "0", null); 66 writer.writeAttribute("marginwidth", "0", null); 67 writer.writeAttribute("marginheight", "0", null); 68 writer.writeAttribute("scrolling", "no", null); 69 writer.writeAttribute("allowtransparency", "true", null); 73 writer.endElement("iframe"); 74 75 Throwable uploadException = c.getUploadException(); 76 if (uploadException != null) { 77 try { 78 throw uploadException; 79 } catch (FileUploadBase.FileSizeLimitExceededException e) { 80 context.addMessage(null, MessageUtils.getMessage(context, InputFile.SIZE_LIMIT_EXCEEDED_MESSAGE_ID)); 81 } catch (FileUploadBase.UnknownSizeException e) { 82 context.addMessage(null, MessageUtils.getMessage(context, InputFile.UNKNOWN_SIZE_MESSAGE_ID)); 83 } catch (FileUploadBase.InvalidContentTypeException e) { 84 String fileName = c.getFileInfo().getFileName(); 85 if(fileName == null) { 86 File file = c.getFile(); 87 if(file != null) 88 fileName = file.getName(); 89 } 90 if(fileName == null) 91 fileName = ""; 92 context.addMessage(null, MessageUtils.getMessage(context, InputFile.INVALID_FILE_MESSAGE_ID, new Object [] { fileName })); 93 } catch (Throwable t) { 94 } 96 } 97 } 98 } | Popular Tags |