You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2016/04/11 08:57:38 UTC
svn commit: r1738526 -
/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/FileRenderer.java
Author: lofwyr
Date: Mon Apr 11 06:57:38 2016
New Revision: 1738526
URL: http://svn.apache.org/viewvc?rev=1738526&view=rev
Log:
TOBAGO-1539: Summary: Using Servelt 3.0 for uploading files with <tc:file>
* Add "accept" attribute for supported mime types
[developed by hnoeth]
Modified:
myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/FileRenderer.java
Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/FileRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/FileRenderer.java?rev=1738526&r1=1738525&r2=1738526&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/FileRenderer.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/FileRenderer.java Mon Apr 11 06:57:38 2016
@@ -34,6 +34,7 @@ import org.apache.myfaces.tobago.renderk
import org.apache.myfaces.tobago.renderkit.util.HttpPartWrapper;
import org.apache.myfaces.tobago.renderkit.util.RenderUtils;
import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.apache.myfaces.tobago.validator.FileItemValidator;
import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,6 +45,7 @@ import javax.faces.event.ComponentSystem
import javax.faces.event.ComponentSystemEventListener;
import javax.faces.event.ListenerFor;
import javax.faces.event.PostAddToViewEvent;
+import javax.faces.validator.Validator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
import java.io.IOException;
@@ -95,6 +97,7 @@ public class FileRenderer extends LabelL
final AbstractUIFile file = (AbstractUIFile) component;
final String clientId = file.getClientId(facesContext);
+ final String accept = createAcceptFromValidators(file);
final TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
@@ -108,6 +111,7 @@ public class FileRenderer extends LabelL
writer.writeClassAttribute(BootstrapClass.INPUT_GROUP);
writer.startElement(HtmlElements.INPUT);
writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.TEXT);
+ writer.writeAttribute(HtmlAttributes.ACCEPT, accept, true);
writer.writeAttribute(HtmlAttributes.TABINDEX, -1);
writer.writeClassAttribute(Classes.create(file, "pretty"), BootstrapClass.FORM_CONTROL);
// TODO Focus
@@ -128,6 +132,7 @@ public class FileRenderer extends LabelL
// invisible file input
writer.startElement(HtmlElements.INPUT);
writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.FILE);
+ writer.writeAttribute(HtmlAttributes.ACCEPT, accept, true);
writer.writeAttribute(HtmlAttributes.TABINDEX, -1);
writer.writeIdAttribute(clientId + ComponentUtils.SUB_SEPARATOR + "real");
writer.writeClassAttribute(Classes.create(file, "real"));
@@ -149,6 +154,24 @@ public class FileRenderer extends LabelL
writer.endElement(HtmlElements.INPUT);
}
+ private String createAcceptFromValidators(final AbstractUIFile file) {
+ final StringBuilder builder = new StringBuilder();
+ for (Validator validator : file.getValidators()) {
+ if (validator instanceof FileItemValidator) {
+ final FileItemValidator fileItemValidator = (FileItemValidator) validator;
+ for (final String contentType : fileItemValidator.getContentType()) {
+ builder.append(",");
+ builder.append(contentType);
+ }
+ }
+ }
+ if (builder.length() > 0) {
+ return builder.substring(1);
+ } else {
+ return null;
+ }
+ }
+
@Override
protected void encodeEndField(FacesContext facesContext, UIComponent component) throws IOException {
final TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);