org.apache.wicket.markup.html.form.upload
Class FileUploadField

java.lang.Object
  extended by org.apache.wicket.Component
      extended by org.apache.wicket.MarkupContainer
          extended by org.apache.wicket.markup.html.WebMarkupContainer
              extended by org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
                  extended by org.apache.wicket.markup.html.form.FormComponent<java.util.List<FileUpload>>
                      extended by org.apache.wicket.markup.html.form.upload.FileUploadField
All Implemented Interfaces:
java.io.Serializable, java.lang.Iterable<Component>, IEventSink, IEventSource, IClusterable, IConverterLocator, IFormModelUpdateListener, IFormVisitorParticipant, ILabelProvider<java.lang.String>, IHeaderContributor, IRequestableComponent, IHierarchical<Component>

public class FileUploadField
extends FormComponent<java.util.List<FileUpload>>

Form component that corresponds to a <input type="file">. When a FileInput component is nested in a Form, that has multipart == true, its model is updated with the FileUpload for this component.

NOTEThe model of this component is reset with null at the end of the request because FileUpload instances do not survive across requests since the input streams they point to will be closed. Because of this, the FileUpload 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_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER
 
Constructor Summary
FileUploadField(java.lang.String id)
           
FileUploadField(java.lang.String id, IModel<java.util.List<FileUpload>> model)
           
 
Method Summary
protected  java.util.List<FileUpload> convertValue(java.lang.String[] value)
          Subclasses should overwrite this if the conversion is not done through the type field and the IConverter.
protected  boolean forceCloseStreamsOnDetach()
          The FileUploadField will close any input streams you have opened in its FileUpload by default.
 FileUpload getFileUpload()
           
 java.util.List<FileUpload> getFileUploads()
           
 java.lang.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, getModel, getModelObject, getModelValue, getRawInput, getType, getValidatorKeyPrefix, getValidators, getValue, hasRawInput, inputAsInt, inputAsInt, inputAsIntArray, inputChanged, internalOnModelChanged, invalid, isInputNullable, isRequired, isValid, newValidatable, onDisabled, onInvalid, onValid, processChildren, processInput, remove, setConvertedInput, setLabel, setModel, setModelObject, setModelValue, setRequired, setType, shouldTrimInput, trim, updateCollectionModel, valid, validate, validateRequired, validateValidators, visitComponentsPostOrder, visitFormComponentsPostOrder
 
Methods inherited from class org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
getLabel, setLabelInternal
 
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebPage, getWebRequest
 
Methods inherited from class org.apache.wicket.MarkupContainer
add, addOrReplace, autoAdd, contains, get, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, hasAssociatedMarkup, internalAdd, internalInitialize, iterator, iterator, onAfterRenderChildren, onComponentTagBody, onMarkupAttached, onRender, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, swap, toString, toString, visitChildren, visitChildren, visitChildren, visitChildren
 
Methods inherited from class org.apache.wicket.Component
add, addStateChange, afterRender, beforeRender, canCallListenerInterface, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, configure, continueToOriginalDestination, 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, getFeedbackMessage, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, 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, internalPrepareForRender, internalRenderComponent, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, locateMarkupStream, markRendering, modelChanged, modelChanging, newMarkupSourcingStrategy, onAfterRender, onBeforeRender, onConfigure, onEvent, onInitialize, onModelChanged, onModelChanging, onRemove, prepareForRender, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderHead, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setRequestFlag, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlFor, urlFor, visitParents, warn, wrap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FileUploadField

public FileUploadField(java.lang.String id)
See Also:
Component.Component(String)

FileUploadField

public FileUploadField(java.lang.String id,
                       IModel<java.util.List<FileUpload>> model)
Parameters:
id - See Component
model - the model holding the uploaded FileUploads
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 java.util.List<FileUpload> getFileUploads()
Returns:
a list of all uploaded files. 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 interface IFormModelUpdateListener
Overrides:
updateModel in class FormComponent<java.util.List<FileUpload>>
See Also:
FormComponent.updateModel()

getInputAsArray

public java.lang.String[] getInputAsArray()
Description copied from class: FormComponent
Gets the request parameters for this component as strings.

Overrides:
getInputAsArray in class FormComponent<java.util.List<FileUpload>>
Returns:
The values in the request for this component
See Also:
FormComponent.getInputAsArray()

convertValue

protected java.util.List<FileUpload> convertValue(java.lang.String[] value)
                                           throws ConversionException
Description copied from class: FormComponent
Subclasses should overwrite this if the conversion is not done through the type field and the IConverter. WARNING: this method may be removed in future versions. If conversion fails then a ConversionException should be thrown

Overrides:
convertValue in class FormComponent<java.util.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
See Also:
FormComponent.convertValue(java.lang.String[])

isMultiPart

public boolean isMultiPart()
Overrides:
isMultiPart in class FormComponent<java.util.List<FileUpload>>
Returns:
True if this component encodes data in a multipart form submit
See Also:
FormComponent.isMultiPart()

onComponentTag

protected void onComponentTag(ComponentTag tag)
Description copied from class: FormComponent
Processes the component tag.

Overrides:
onComponentTag in class FormComponent<java.util.List<FileUpload>>
Parameters:
tag - Tag to modify
See Also:
Component.onComponentTag(org.apache.wicket.markup.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 class FormComponent<java.util.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


Copyright © 2006-2011 Apache Software Foundation. All Rights Reserved.