Class DownloadLink
- java.lang.Object
-
- org.apache.wicket.Component
-
- org.apache.wicket.MarkupContainer
-
- org.apache.wicket.markup.html.WebMarkupContainer
-
- org.apache.wicket.markup.html.link.AbstractLink
-
- org.apache.wicket.markup.html.link.Link<File>
-
- org.apache.wicket.markup.html.link.DownloadLink
-
- All Implemented Interfaces:
Serializable
,Iterable<Component>
,IEventSink
,IEventSource
,IFeedbackContributor
,IConverterLocator
,IGenericComponent<File,Link<File>>
,IMetadataContext<Serializable,Component>
,IRequestListener
,IHeaderContributor
,IRequestableComponent
,IHierarchical<Component>
,IClusterable
public class DownloadLink extends Link<File>
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:
- Serialized Form
-
-
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
Constructors Constructor Description DownloadLink(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.DownloadLink(String id, IModel<File> fileModel, IModel<String> fileNameModel)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
detachModels()
Detaches all modelsvoid
onClick()
Called when a link is clicked.DownloadLink
setCacheDuration(Duration duration)
Sets the duration for which the file resource should be cached by the client.DownloadLink
setContentDisposition(ContentDisposition contentDisposition)
Sets the content disposition of the request.DownloadLink
setDeleteAfterDownload(boolean deleteAfter)
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.-
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, 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 Detail
-
DownloadLink
public DownloadLink(String id, File file)
Constructor. File name used will be the result offile.getName()
- Parameters:
id
- component idfile
- file to stream to client
-
DownloadLink
public DownloadLink(String id, IModel<File> model)
Constructor. File name used will be the result offile.getName()
- Parameters:
id
- component idmodel
- model that contains the file object
-
DownloadLink
public DownloadLink(String id, IModel<File> model, String fileName)
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
public DownloadLink(String id, File file, String fileName)
Constructor- Parameters:
id
- component idfile
- file to stream to clientfileName
- name of the file
-
DownloadLink
public DownloadLink(String id, IModel<File> fileModel, IModel<String> fileNameModel)
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 Detail
-
detachModels
public void detachModels()
Description copied from class:Component
Detaches all models- Overrides:
detachModels
in classComponent
-
setDeleteAfterDownload
public final DownloadLink setDeleteAfterDownload(boolean deleteAfter)
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
public DownloadLink setCacheDuration(Duration duration)
Sets the duration for which the file resource should be cached by the client.- Parameters:
duration
- the duration to cache- Returns:
- this component.
-
setContentDisposition
public DownloadLink setContentDisposition(ContentDisposition contentDisposition)
Sets the content disposition of the request.- Parameters:
contentDisposition
- the content disposition of the file- Returns:
- this component
-
-