@Override public void encodeMarkupEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException { // If the component should show the progress table, then InputFile inputFile = (InputFile) uiComponent; ResponseWriter responseWriter = facesContext.getResponseWriter(); if (inputFile.isShowProgress()) { // Finish encoding of the outermost <div> element. Since the template contains its own "Select // Files" // button, delegation must not occur. responseWriter.endElement("div"); } // Otherwise, if the component should show the preview table, then else if (inputFile.isShowPreview()) { encodePreview(facesContext, responseWriter, inputFile); // Finish encoding of the outermost <div> element. responseWriter.endElement("div"); } // Otherwise, delegate writing of the entire <input type="file"...> ... </input> element to the // delegate // renderer. else { DelegationResponseWriter delegationResponseWriter = new InputFileDelegationResponseWriter(responseWriter, inputFile.isAuto()); super.encodeMarkupEnd(facesContext, uiComponent, delegationResponseWriter); } }
protected void encodePreview( FacesContext facesContext, ResponseWriter responseWriter, InputFile inputFile) throws IOException { // Delegate writing of the entire <input type="file"...> ... </input> element to the delegate // renderer. DelegationResponseWriter delegationResponseWriter = new InputFileDelegationResponseWriter(responseWriter, inputFile.isAuto()); super.encodeMarkupEnd(facesContext, inputFile, delegationResponseWriter); // Format the preview-table.html template and write it to the response. Locale locale = facesContext.getViewRoot().getLocale(); String clientId = inputFile.getClientId(facesContext); responseWriter.startElement("div", inputFile); responseWriter.startElement("table", inputFile); responseWriter.writeAttribute("id", clientId + "_table", null); responseWriter.writeAttribute("class", "table table-bordered", null); responseWriter.startElement("thead", inputFile); responseWriter.writeAttribute("class", "table-columns", null); responseWriter.startElement("tr", inputFile); responseWriter.startElement("th", inputFile); MessageContextFactory messageContextFactory = (MessageContextFactory) FactoryExtensionFinder.getFactory(MessageContextFactory.class); MessageContext messageContext = messageContextFactory.getMessageContext(); String i18nFileName = messageContext.getMessage(locale, "file-name"); responseWriter.writeText(i18nFileName, null); responseWriter.endElement("th"); responseWriter.startElement("th", inputFile); String i18nFileType = messageContext.getMessage(locale, "file-type"); responseWriter.writeText(i18nFileType, null); responseWriter.endElement("th"); responseWriter.startElement("th", inputFile); String i18nFileSize = messageContext.getMessage(locale, "file-size"); responseWriter.writeText(i18nFileSize, null); responseWriter.endElement("th"); responseWriter.endElement("tr"); responseWriter.endElement("thead"); responseWriter.startElement("tfoot", inputFile); responseWriter.startElement("tr", inputFile); responseWriter.startElement("td", inputFile); responseWriter.writeAttribute("colspan", "3", null); String i18nNoFilesSelected = messageContext.getMessage(locale, "no-files-selected"); responseWriter.writeText(i18nNoFilesSelected, null); responseWriter.endElement("td"); responseWriter.endElement("tr"); responseWriter.endElement("tfoot"); responseWriter.startElement("tbody", inputFile); responseWriter.startElement("tr", inputFile); responseWriter.endElement("tr"); responseWriter.endElement("tbody"); responseWriter.endElement("table"); responseWriter.endElement("div"); }
@Override public void encodeMarkupBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException { ResponseWriter responseWriter = facesContext.getResponseWriter(); InputFile inputFile = (InputFile) uiComponent; // If the component should render the preview table or the upload progress table, then if (inputFile.isShowPreview() || inputFile.isShowProgress()) { // Start encoding the outermost <div> element. responseWriter.startElement("div", uiComponent); String clientId = uiComponent.getClientId(facesContext); responseWriter.writeAttribute("id", clientId, "id"); RendererUtil.encodeStyleable(responseWriter, (Styleable) uiComponent); // If the component should render the upload progress table, then format the // progress-table.html template // and write it to the response. if (inputFile.isShowProgress()) { encodeProgress(facesContext, responseWriter, uiComponent, clientId); } // Otherwise, delegate writing to the delegate renderer. Note that this effectively a no-op // with Mojarra and // MyFaces, since they both delay writing of the entire <input type="file"...> ... </input> // element until // encodeEnd. else { super.encodeMarkupBegin(facesContext, uiComponent); } } // Otherwise, delegate writing to the delegate renderer. Note that this effectively a no-op with // Mojarra and // MyFaces, since they both delay writing of the entire <input type="file"...> ... </input> // element until // encodeEnd. else { super.encodeMarkupBegin(facesContext, uiComponent); } }