Class FileUploadField
- java.lang.Object
-
- org.apache.wicket.Component
-
- org.apache.wicket.MarkupContainer
-
- org.apache.wicket.markup.html.WebMarkupContainer
-
- org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
-
- org.apache.wicket.markup.html.form.FormComponent<List<FileUpload>>
-
- org.apache.wicket.markup.html.form.upload.FileUploadField
-
- All Implemented Interfaces:
Serializable
,Iterable<Component>
,IEventSink
,IEventSource
,IFeedbackContributor
,IConverterLocator
,IGenericComponent<List<FileUpload>,FormComponent<List<FileUpload>>>
,IMetadataContext<Serializable,Component>
,IFormModelUpdateListener
,IFormVisitorParticipant
,ILabelProvider<String>
,IHeaderContributor
,IRequestableComponent
,IHierarchical<Component>
,IClusterable
public class FileUploadField extends FormComponent<List<FileUpload>>
Form component that corresponds to a <input type="file">. When a FileInput component is nested in aForm
, that has multipart == true, its model is updated with theFileUpload
for this component.NOTEThe model of this component is reset with
null
at the end of the request becauseFileUpload
instances do not survive across requests since the input streams they point to will be closed. Because of this, theFileUpload
instance should be processed within the same request as the form containing it was submitted.- Author:
- Eelco Hillenius
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.apache.wicket.markup.html.form.FormComponent
FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL, VALUE_SEPARATOR
-
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_INITIALIZED, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING, RFLAG_CONTAINER_HAS_REMOVALS
-
-
Constructor Summary
Constructors Constructor Description FileUploadField(String id)
FileUploadField(String id, IModel<? extends List<FileUpload>> model)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected List<FileUpload>
convertValue(String[] value)
Subclasses should overwrite this if the conversion is not done through the type field and theIConverter
.protected boolean
forceCloseStreamsOnDetach()
The FileUploadField will close any input streams you have opened in its FileUpload by default.FileUpload
getFileUpload()
List<FileUpload>
getFileUploads()
String[]
getInputAsArray()
Gets the request parameters for this component as strings.boolean
isMultiPart()
protected void
onComponentTag(ComponentTag tag)
Processes the component tag.protected void
onDetach()
Clean up at the end of the request.void
updateModel()
Updates this components model from the request, it expects that the object is already converted through the convertInput() call that is called by the validate() method when a form is being processed.-
Methods inherited from class org.apache.wicket.markup.html.form.FormComponent
add, add, checkRequired, clearInput, convertInput, error, getConvertedInput, getDefaultLabel, getDefaultLabel, getForm, getInput, getInputName, getModelValue, getParameterValues, getRawInput, getType, getValidatorKeyPrefix, getValidators, getValue, hasRawInput, inputAsInt, inputAsInt, inputAsIntArray, inputChanged, internalOnModelChanged, invalid, isInputNullable, isRequired, isValid, newValidatable, newValidationError, onBeforeRender, onDisabled, onInvalid, onValid, processChildren, processInput, remove, reportRequiredError, setConvertedInput, setLabel, setModelValue, setRequired, setType, shouldTrimInput, trim, updateAutoLabels, updateAutoLabels, updateCollectionModel, valid, validate, validateRequired, validateValidators, visitComponentsPostOrder, visitFormComponentsPostOrder
-
Methods inherited from class org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
getLabel
-
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession
-
Methods inherited from class org.apache.wicket.MarkupContainer
add, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, getRegionMarkup, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onComponentTagBody, onInitialize, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, stream, streamChildren, toString, toString, visitChildren, visitChildren
-
Methods inherited from class org.apache.wicket.Component
add, addStateChange, beforeRender, canCallListener, canCallListenerAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, createConverter, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMarkupTag, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, newMarkupSourcingStrategy, onAfterRender, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderPart, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlForListener, urlForListener, visitParents, visitParents, warn, wrap
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.wicket.IGenericComponent
getDefaultModel, getDefaultModelObject, getModel, getModelObject, setDefaultModel, setDefaultModelObject, setModel, setModelObject
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
FileUploadField
public FileUploadField(String id)
- See Also:
Component(String)
-
FileUploadField
public FileUploadField(String id, IModel<? extends List<FileUpload>> model)
- Parameters:
id
- See Componentmodel
- the model holding the uploadedFileUpload
s
-
-
Method Detail
-
getFileUpload
public FileUpload getFileUpload()
- Returns:
- the first uploaded file if HTML5 <input type="file" multiple /> is used and the browser supports multiple, otherwise returns the single uploaded file.
- See Also:
getFileUploads()
-
getFileUploads
public List<FileUpload> getFileUploads()
- Returns:
- a list of all uploaded files. The list is empty if no files were selected. It will return more than one files if:
- HTML5 <input type="file" multiple /> is used
- the browser supports multiple attribute
- the user has selected more than one files from the Select file dialog
-
updateModel
public void updateModel()
Description copied from class:FormComponent
Updates this components model from the request, it expects that the object is already converted through the convertInput() call that is called by the validate() method when a form is being processed. By default it just does this:setModelObject(getConvertedInput());
DO NOT CALL THIS METHOD DIRECTLY UNLESS YOU ARE SURE WHAT YOU ARE DOING. USUALLY UPDATING YOUR MODEL IS HANDLED BY THE FORM, NOT DIRECTLY BY YOU.- Specified by:
updateModel
in interfaceIFormModelUpdateListener
- Overrides:
updateModel
in classFormComponent<List<FileUpload>>
-
getInputAsArray
public String[] getInputAsArray()
Description copied from class:FormComponent
Gets the request parameters for this component as strings.- Overrides:
getInputAsArray
in classFormComponent<List<FileUpload>>
- Returns:
- The values in the request for this component
-
convertValue
protected List<FileUpload> convertValue(String[] value) throws ConversionException
Description copied from class:FormComponent
Subclasses should overwrite this if the conversion is not done through the type field and theIConverter
. WARNING: this method may be removed in future versions. If conversion fails then a ConversionException should be thrown- Overrides:
convertValue
in classFormComponent<List<FileUpload>>
- Parameters:
value
- The value can be the getInput() or through a cookie- Returns:
- The converted value. default returns just the given value
- Throws:
ConversionException
- If input can't be converted
-
isMultiPart
public boolean isMultiPart()
- Overrides:
isMultiPart
in classFormComponent<List<FileUpload>>
- Returns:
- True if this component encodes data in a multipart form submit
-
onComponentTag
protected void onComponentTag(ComponentTag tag)
Description copied from class:FormComponent
Processes the component tag.- Overrides:
onComponentTag
in classFormComponent<List<FileUpload>>
- Parameters:
tag
- Tag to modify- See Also:
Component.onComponentTag(ComponentTag)
-
onDetach
protected void onDetach()
Clean up at the end of the request. This means closing all inputstreams which might have been opened from the fileUpload.- Overrides:
onDetach
in classFormComponent<List<FileUpload>>
- See Also:
Component.onDetach()
-
forceCloseStreamsOnDetach
protected boolean forceCloseStreamsOnDetach()
The FileUploadField will close any input streams you have opened in its FileUpload by default. If you wish to manage the stream yourself (e.g. you want to use it in another thread) then you can override this method to prevent this behavior.- Returns:
true
if stream should be closed at the end of request
-
-