You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2021/03/30 08:49:35 UTC
[myfaces] branch master updated: MYFACES-4386 / Faces 4.0:
h:inputFile accept="..."
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/master by this push:
new df0e681 MYFACES-4386 / Faces 4.0: h:inputFile accept="..."
df0e681 is described below
commit df0e68187792424ab3bfa8ff6818a4516685824f
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Tue Mar 30 10:49:26 2021 +0200
MYFACES-4386 / Faces 4.0: h:inputFile accept="..."
---
.../faces/component/html/_HtmlInputFile.java | 9 ++++
.../html/base/HtmlInputFileRendererBase.java | 55 +++++-----------------
2 files changed, 20 insertions(+), 44 deletions(-)
diff --git a/api/src/main/java/jakarta/faces/component/html/_HtmlInputFile.java b/api/src/main/java/jakarta/faces/component/html/_HtmlInputFile.java
index 173ed88..eb71d58 100644
--- a/api/src/main/java/jakarta/faces/component/html/_HtmlInputFile.java
+++ b/api/src/main/java/jakarta/faces/component/html/_HtmlInputFile.java
@@ -74,6 +74,15 @@ abstract class _HtmlInputFile extends UIInput implements _AccesskeyProperty,
@JSFProperty
public abstract String getAutocomplete();
+ /**
+ * Comma separated string of mime types of files to filter in client side file browse dialog.
+ * NOTE: this is not validated in server side.
+ *
+ * @return
+ */
+ @JSFProperty
+ public abstract String getAccept();
+
@Override
protected void validateValue(FacesContext context, Object convertedValue)
{
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlInputFileRendererBase.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlInputFileRendererBase.java
index 9e4fdca..27578d8 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlInputFileRendererBase.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/base/HtmlInputFileRendererBase.java
@@ -44,9 +44,8 @@ import jakarta.faces.component.UIViewRoot;
import jakarta.faces.component.behavior.ClientBehavior;
import jakarta.faces.component.behavior.ClientBehaviorHolder;
import jakarta.faces.component.html.HtmlForm;
-import jakarta.faces.component.html.HtmlInputText;
+import jakarta.faces.component.html.HtmlInputFile;
import org.apache.myfaces.core.api.shared.ComponentUtils;
-import org.apache.myfaces.renderkit.RendererUtils;
import org.apache.myfaces.renderkit.html.util.HttpPartWrapper;
import org.apache.myfaces.renderkit.html.util.HTML;
@@ -119,15 +118,6 @@ public class HtmlInputFileRendererBase extends HtmlRenderer
return submittedValue;
}
- /**
- * Returns the HTML type attribute of HTML input element, which is being rendered.
- */
- protected String getInputHtmlType(UIComponent component)
- {
- //subclasses may act on properties of the component
- return HTML.INPUT_TYPE_FILE;
- }
-
protected void renderValue(FacesContext facesContext, UIComponent component, ResponseWriter writer)
throws IOException
{
@@ -157,10 +147,7 @@ public class HtmlInputFileRendererBase extends HtmlRenderer
writer.startElement(HTML.INPUT_ELEM, component);
writer.writeAttribute(HTML.ID_ATTR, clientId, null);
writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
-
- //allow extending classes to modify html input element's type
- String inputHtmlType = getInputHtmlType(component);
- writer.writeAttribute(HTML.TYPE_ATTR, inputHtmlType, null);
+ writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_FILE, null);
renderValue(facesContext, component, writer);
@@ -226,49 +213,29 @@ public class HtmlInputFileRendererBase extends HtmlRenderer
}
}
- if (isDisabled(facesContext, component))
+ HtmlInputFile inputFile = (HtmlInputFile) component;
+
+ if (inputFile.isDisabled())
{
writer.writeAttribute(HTML.DISABLED_ATTR, Boolean.TRUE, null);
}
- if (isAutocompleteOff(facesContext, component))
+ if (AUTOCOMPLETE_VALUE_OFF.equals(inputFile.getAutocomplete()))
{
writer.writeAttribute(HTML.AUTOCOMPLETE_ATTR, AUTOCOMPLETE_VALUE_OFF, HTML.AUTOCOMPLETE_ATTR);
}
- }
-
- protected void renderInputEnd(FacesContext facesContext, UIComponent component) throws IOException
- {
- ResponseWriter writer = facesContext.getResponseWriter();
-
- writer.endElement(HTML.INPUT_ELEM);
- }
- protected boolean isDisabled(FacesContext facesContext, UIComponent component)
- {
- if (component instanceof HtmlInputText)
+ if (inputFile.getAccept() != null)
{
- return ((HtmlInputText)component).isDisabled();
+ writer.writeAttribute(HTML.ACCEPT_ATTR, inputFile.getAccept(), HTML.ACCEPT_ATTR);
}
-
- return RendererUtils.getBooleanAttribute(component, HTML.DISABLED_ATTR, false);
}
- /**
- * If autocomplete is "on" or not set, do not render it
- */
- protected boolean isAutocompleteOff(FacesContext facesContext, UIComponent component)
+ protected void renderInputEnd(FacesContext facesContext, UIComponent component) throws IOException
{
- if (component instanceof HtmlInputText)
- {
- String autocomplete = ((HtmlInputText)component).getAutocomplete();
- if (autocomplete != null)
- {
- return autocomplete.equals(AUTOCOMPLETE_VALUE_OFF);
- }
- }
+ ResponseWriter writer = facesContext.getResponseWriter();
- return false;
+ writer.endElement(HTML.INPUT_ELEM);
}
public static void renderOutputText(FacesContext facesContext, UIComponent component, String text, boolean escape)