java.lang.Object
- All Implemented Interfaces:
Serializable
,Iterable<Component>
,IEventSink
,IEventSource
,IFeedbackContributor
,IConverterLocator
,IGenericComponent<File,
,Link<File>> IMetadataContext<Serializable,
,Component> IRequestListener
,IHeaderContributor
,IRequestableComponent
,IHierarchical<Component>
,IClusterable
A link that streams a file to the client. When clicked this link will prompt the save as dialog
in the browser.
NOTICE that this link will lock the page. That means only one link from the page can be
downloaded at a time, and also while the download happens the page cannot be accessed by other
threads. If you need to stream multiple files concurrently without blocking then you should use
shared resources or a non-wicket servlet.
- Author:
- Igor Vaynberg (ivaynberg)
- See Also:
-
Field Summary
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
ConstructorDescriptionDownloadLink
(String id, File file) Constructor.DownloadLink
(String id, File file, String fileName) ConstructorDownloadLink
(String id, IModel<File> model) Constructor.DownloadLink
(String id, IModel<File> model, String fileName) Constructor.Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Detaches all modelsvoid
onClick()
Called when a link is clicked.setCacheDuration
(Duration duration) Sets the duration for which the file resource should be cached by the client.setContentDisposition
(ContentDisposition contentDisposition) Sets the content disposition of the request.final DownloadLink
setDeleteAfterDownload
(boolean deleteAfter) USE THIS METHOD WITH CAUTION!Methods inherited from class org.apache.wicket.markup.html.link.Link
appendAnchor, getAnchor, getAutoEnable, getOnClickScript, getPopupSettings, getStatelessHint, getURL, isEnabled, linksTo, onComponentTag, onRequest, renderHead, setAnchor, setAutoEnable, setPopupSettings, useJSEventBindingWhenNeeded
Methods inherited from class org.apache.wicket.markup.html.link.AbstractLink
disableLink, getBody, onComponentTagBody, onDetach, setBody
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, onInitialize, onRender, queue, remove, remove, removeAll, renderAll, 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, 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, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalOnModelChanged, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, newMarkupSourcingStrategy, onAfterRender, onBeforeRender, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, 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 org.apache.wicket.IRequestListener
rendersPage
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
DownloadLink
Constructor. File name used will be the result offile.getName()
- Parameters:
id
- component idfile
- file to stream to client
-
DownloadLink
Constructor. File name used will be the result offile.getName()
- Parameters:
id
- component idmodel
- model that contains the file object
-
DownloadLink
Constructor. File name used will be the result offile.getName()
- Parameters:
id
- component idmodel
- model that contains the file objectfileName
- name of the file
-
DownloadLink
Constructor- Parameters:
id
- component idfile
- file to stream to clientfileName
- name of the file
-
DownloadLink
Constructor. File name used will be the result offile.getName()
- Parameters:
id
- component idfileModel
- model that contains the file objectfileNameModel
- model that provides the file name to use in the response headers
-
-
Method Details
-
detachModels
Description copied from class:Component
Detaches all models- Overrides:
detachModels
in classComponent
-
onClick
Description copied from class:Link
Called when a link is clicked. -
setDeleteAfterDownload
USE THIS METHOD WITH CAUTION! If true, the file will be deleted! The recommended way to use this setting, is to set this DownloadLink object's model with a LoadableDetachableModel instance and the resulting file being generated in a temporary folder.- Parameters:
deleteAfter
- true to delete file after download succeeds- Returns:
- this component
-
setCacheDuration
Sets the duration for which the file resource should be cached by the client.- Parameters:
duration
- the duration to cache- Returns:
- this component.
-
setContentDisposition
Sets the content disposition of the request.- Parameters:
contentDisposition
- the content disposition of the file- Returns:
- this component
-