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

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<T>
                      extended by org.apache.wicket.markup.html.form.FormComponentPanel<Collection<FileUpload>>
                          extended by org.apache.wicket.markup.html.form.upload.MultiFileUploadField
All Implemented Interfaces:
Serializable, IClusterable, IConverterLocator, IFormModelUpdateListener, IFormVisitorParticipant, ILabelProvider<String>, IHeaderContributor, IHeaderPartContainerProvider

public class MultiFileUploadField
extends FormComponentPanel<Collection<FileUpload>>
implements IHeaderContributor

Form component that allows the user to select multiple files to upload via a single <input type="file"/> field. Notice that this component clears its model at the end of the request, so the uploaded files MUST be processed within the request they were uploaded. Uses javascript implementation from http://the-stickman.com/web-development/javascript/upload-multiple -files-with-a-single-file-element/ For customizing caption text see RESOURCE_LIMITED and RESOURCE_UNLIMITED For an example of styling using CSS see the upload example in wicket-examples

Author:
Igor Vaynberg (ivaynberg)
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.wicket.markup.html.form.FormComponent
FormComponent.AbstractVisitor, FormComponent.IVisitor
 
Nested classes/interfaces inherited from class org.apache.wicket.Component
Component.ComponentModelChange, Component.EnabledChange, Component.VisibilityChange
 
Field Summary
static String RESOURCE_LIMITED
          Resource key used to retrieve caption message for when a limit on the number of uploads is specified.
static String RESOURCE_UNLIMITED
          Resource key used to retrieve caption message for when no limit on the number of uploads is specified.
static int UNLIMITED
          Represents an unlimited max count of uploads
 
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_CONFIGURED, FLAG_INITIALIZED, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED6, FLAG_RESERVED7, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER
 
Constructor Summary
MultiFileUploadField(String id)
          Constructor
MultiFileUploadField(String id, IModel<? extends Collection<FileUpload>> model)
          Constructor
MultiFileUploadField(String id, IModel<? extends Collection<FileUpload>> model, int max)
          Constructor
MultiFileUploadField(String id, int max)
          Constructor
 
Method Summary
protected  Collection<FileUpload> convertValue(String[] value)
          Subclasses should overwrite this if the conversion is not done through the type field and the IConverter.
 String[] getInputAsArray()
          Gets the request parameters for this component as strings.
 boolean isMultiPart()
           
protected  void onBeforeRender()
          Called just before a component is rendered.
protected  void onComponentTag(ComponentTag tag)
          Processes the component tag.
protected  void onDetach()
          Sets the temporary converted input value to null.
 void renderHead(IHeaderResponse response)
          Render to the web response whatever the component wants to contribute to the head section.
 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.FormComponentPanel
checkRequired, newHeaderPartContainer, onComponentTagBody, renderHead
 
Methods inherited from class org.apache.wicket.markup.html.form.FormComponent
add, add, 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, isPersistent, isRequired, isValid, newValidatable, onDisabled, onInvalid, onValid, processChildren, processInput, setConvertedInput, setLabel, setModel, setModelObject, setModelValue, setModelValue, setPersistent, setRequired, setType, shouldTrimInput, supportsPersistence, trim, 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
getMarkupType, getWebPage, getWebRequest
 
Methods inherited from class org.apache.wicket.MarkupContainer
add, addOrReplace, autoAdd, autoAdd, contains, findMarkupStream, get, get, getAssociatedMarkupStream, getMarkupStream, hasAssociatedMarkup, internalAdd, isTransparentResolver, iterator, iterator, newMarkupResourceStream, onAfterRenderChildren, onRender, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderComponentTagBody, renderNext, replace, setDefaultModel, setMarkupStream, size, swap, toString, toString, visitChildren, visitChildren
 
Methods inherited from class org.apache.wicket.Component
add, addStateChange, afterRender, beforeRender, callOnBeforeRenderIfNotVisible, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, configure, continueToOriginalDestination, debug, detach, detachBehaviors, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviors, getBehaviors, getBehaviorsRawList, getClassRelativePath, getComponentBorder, getConverter, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessage, getFlag, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdImpl, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalAttach, internalDetach, internalOnAttach, internalOnDetach, isActionAuthorized, isAncestorOf, isAttached, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, locateMarkupStream, markAttached, markRendering, modelChanged, modelChanging, onAfterRender, onAttach, onBeginRequest, onConfigure, onEndRequest, onInitialize, onModelChanged, onModelChanging, onRemove, prepareForRender, prepareForRender, redirectToInterceptPage, remove, remove, render, render, renderComponent, renderComponent, renderComponentTag, rendered, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, setAuto, setComponentBorder, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setFlag, setIgnoreAttributeModifier, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setRedirect, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, urlFor, 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
 

Field Detail

UNLIMITED

public static final int UNLIMITED
Represents an unlimited max count of uploads

See Also:
Constant Field Values

RESOURCE_LIMITED

public static final String RESOURCE_LIMITED
Resource key used to retrieve caption message for when a limit on the number of uploads is specified. The limit is represented via ${max} variable. Example: org.apache.wicket.mfu.caption.limited=Files (maximum ${max}):

See Also:
Constant Field Values

RESOURCE_UNLIMITED

public static final String RESOURCE_UNLIMITED
Resource key used to retrieve caption message for when no limit on the number of uploads is specified. Example: org.apache.wicket.mfu.caption.unlimited=Files:

See Also:
Constant Field Values
Constructor Detail

MultiFileUploadField

public MultiFileUploadField(String id)
Constructor

Parameters:
id -

MultiFileUploadField

public MultiFileUploadField(String id,
                            int max)
Constructor

Parameters:
id -
max - max number of files a user can upload

MultiFileUploadField

public MultiFileUploadField(String id,
                            IModel<? extends Collection<FileUpload>> model)
Constructor

Parameters:
id -
model -

MultiFileUploadField

public MultiFileUploadField(String id,
                            IModel<? extends Collection<FileUpload>> model,
                            int max)
Constructor

Parameters:
id -
model -
max - max number of files a user can upload
Method Detail

onComponentTag

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

Overrides:
onComponentTag in class FormComponentPanel<Collection<FileUpload>>
Parameters:
tag - Tag to modify
See Also:
FormComponentPanel.onComponentTag(org.apache.wicket.markup.ComponentTag)

onBeforeRender

protected void onBeforeRender()
Description copied from class: Component
Called just before a component is rendered.

NOTE: If you override this, you *must* call super.onBeforeRender() within your implementation. Because this method is responsible for cascading Component.onBeforeRender() call to its children it is strongly recommended that super call is made at the end of the override.

Overrides:
onBeforeRender in class Component
See Also:
Component.onBeforeRender()

isMultiPart

public boolean isMultiPart()
Overrides:
isMultiPart in class FormComponent<Collection<FileUpload>>
Returns:
True if this component encodes data in a multipart form submit

renderHead

public void renderHead(IHeaderResponse response)
Description copied from interface: IHeaderContributor
Render to the web response whatever the component wants to contribute to the head section. TODO: Post 1.3, add component parameter, so that the behaviors dont' have to track component instances

Specified by:
renderHead in interface IHeaderContributor
Parameters:
response - Response object
See Also:
IHeaderContributor.renderHead(org.apache.wicket.markup.html.IHeaderResponse)

getInputAsArray

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

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

convertValue

protected Collection<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 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<Collection<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[])

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<Collection<FileUpload>>
See Also:
FormComponent.updateModel()

onDetach

protected void onDetach()
Description copied from class: FormComponent
Sets the temporary converted input value to null.

Overrides:
onDetach in class FormComponent<Collection<FileUpload>>
See Also:
Component.onDetach()


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