Renders an HTML "input" element of "type" "file". The standard HTML_BASIC RenderKit specifies behavior that assumes Servlet 3.0 or later. Portlet implementations must override this implementation with a semantically equivalent one that functions under the constraints of the Portlet specification.
Obtain the Map
from the "requestParameterMap"
property of the ExternalContext
. If the
Map
contains an entry for the "clientId" of the
component, pass the value of the entry to the
setSubmittedValue()
method of the component, which
must be an instance of EditableValueHolder
, and
return. Otherwise, obtain the "request" property from the
ExternalContext
and cast it to
jakarta.servlet.http.HttpServletRequest
. Call
getParts()
on the httpServletRequest. Iterate over
the parts. If the "name" property of the current part is equal to
the "clientId", then collect the part.
After the iteration, if the multiple
attribute is set to true
,
then pass java.util.Collection<jakarta.servlet.http.Part>
to the setSubmittedValue()
method of the component,
else pass the first item, if any, as jakarta.servlet.http.Part
to the
setSubmittedValue()
method of the component. If an
exception is thrown during the iteration, log the exception and
continue.
The standard implementation must override the
getConvertedValue()
so that it filters out from the
submittedValue
any parts which return
null
or an empty string on getSubmittedFileName()
,
or return 0
or less on getSize()
.
Any exception thrown when interacting with the underlying
multi-part API must be wrapped in a FacesException
and allowed to reach the ExceptionHandler
.
Encode Behavior
Render the clientId of the component as the value of the "name" attribute. Do not render the "value" attribute. If the "styleClass" attribute is specified, render its value as the value of the "class" attribute.
If ProjectStage
is not
ProjectStage.Production
, verify that the enclosing
form has an enctype
attribute whose value is
multipart/form-data
. If not, add a
FacesMessage
for this component's clientId to the
FacesContext
stating that file upload requires a form
with enctype
equal to
multipart/form-data
. If ProjectStage
is ProjectStage.Production
, do not
do this verification.
Info | Value |
---|---|
Component Type | jakarta.faces.HtmlInputFile |
Handler Class | None |
Renderer Type | jakarta.faces.File |
Description | None |
Name | Required | Type | Description |
---|---|---|---|
converter | false | jakarta.el.ValueExpression
(must evaluate to jakarta.faces.convert.Converter )
| Converter instance registered with this component. |
converterMessage | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| A ValueExpression enabled attribute that, if present, will be used as the text of the converter message, replacing any message that comes from the converter. |
id | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| The component identifier for this component. This value must be unique within the closest parent component that is a naming container. |
immediate | false | jakarta.el.ValueExpression
(must evaluate to java.lang.Boolean )
| Flag indicating that this component's value must be converted and validated immediately (that is, during Apply Request Values phase), rather than waiting until Process Validations phase. |
rendered | false | jakarta.el.ValueExpression
(must evaluate to java.lang.Boolean )
| Flag indicating whether or not this component should be rendered (during Render Response Phase), or processed on any subsequent form submit. The default value for this property is true. |
required | false | jakarta.el.ValueExpression
(must evaluate to java.lang.Boolean )
| Flag indicating that the user is required to provide a submitted value for this input component. |
requiredMessage | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| A ValueExpression enabled attribute that, if present, will be used as the text of the validation message for the "required" facility, if the "required" facility is used. |
validator | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| MethodExpression representing a validator method that will be called during Process Validations to perform correctness checks on the value of this component. The expression must evaluate to a public method that takes FacesContext, UIComponent, and Object parameters, with a return type of void. |
value | false | jakarta.el.ValueExpression
(must evaluate to java.lang.Object )
|
The current value of this component.
If the multiple attribute is set to true ,
then this must be assignable to java.util.Collection<jakarta.servlet.http.Part> ,
else this must be assignable to jakarta.servlet.http.Part .
|
valueChangeListener | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
|
MethodExpression representing a value change listener method
that will be notified when a new value has been set for this
input component. The expression must evaluate to a public
method that takes a |
accept | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Comma separated string of mime types of files to filter in client side file browse dialog. Note: this is not validated in server side. |
dir | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Direction indication for text that does not inherit directionality. Valid values are "LTR" (left-to-right) and "RTL" (right-to-left). These attributes are case sensitive when rendering to XHTML, so care must be taken to have the correct case. |
disabled | false | jakarta.el.ValueExpression
(must evaluate to java.lang.Boolean )
| Flag indicating that this element must never receive focus or be included in a subsequent submit. A value of false causes no attribute to be rendered, while a value of true causes the attribute to be rendered as disabled="disabled". |
label | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| A localized user presentable name for this component. |
lang | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Code describing the language used in the generated markup for this component. |
multiple | false | jakarta.el.ValueExpression
(must evaluate to boolean )
| Flag indicating that this element must allow multiple file selection. A value of false causes no attribute to be rendered, while a value of true causes the attribute to be rendered as multiple="multiple". |
onblur | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when this element loses focus. |
onchange | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when this element loses focus and its value has been modified since gaining focus. |
onclick | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is clicked over this element. |
ondblclick | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is double clicked over this element. |
onfocus | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when this element receives focus. |
onkeydown | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a key is pressed down over this element. |
onkeypress | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a key is pressed and released over this element. |
onkeyup | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a key is released over this element. |
onmousedown | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is pressed down over this element. |
onmousemove | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is moved within this element. |
onmouseout | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is moved away from this element. |
onmouseover | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is moved onto this element. |
onmouseup | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when a pointer button is released over this element. |
onselect | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Javascript code executed when text within this element is selected by the user. |
role | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
|
Per the WAI-ARIA spec and its relationship to HTML5 (Section title ARIA Role Attriubute), every HTML element may have a "role" attribute whose value must be passed through unmodified on the element on which it is declared in the final rendered markup. The attribute, if specified, must have a value that is a string literal that is, or an EL Expression that evaluates to, a set of space-separated tokens representing the various WAI-ARIA roles that the element belongs to. It is the page author's responsibility to ensure that the user agent is capable of correctly interpreting the value of this attribute. |
style | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| CSS style(s) to be applied when this component is rendered. |
styleClass | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Space-separated list of CSS style class(es) to be applied when this element is rendered. This value must be passed through as the "class" attribute on generated markup. |
tabindex | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Position of this element in the tabbing order for the current document. This value must be an integer between 0 and 32767. |
title | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
| Advisory title information about markup elements generated for this component. |
binding | false | jakarta.el.ValueExpression
(must evaluate to jakarta.faces.component.UIComponent )
| The ValueExpression linking this component to a property in a backing bean |