org.apache.wicket.markup.html.link
Class DownloadLink

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.link.AbstractLink
                  extended by org.apache.wicket.markup.html.link.Link<File>
                      extended by org.apache.wicket.markup.html.link.DownloadLink
All Implemented Interfaces:
Serializable, Iterable<Component>, IEventSink, IEventSource, IConverterLocator, IGenericComponent<File>, IRequestListener, IHeaderContributor, ILinkListener, 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_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER
 
Fields inherited from interface org.apache.wicket.markup.html.link.ILinkListener
INTERFACE
 
Constructor Summary
DownloadLink(String id, File file)
          Constructor.
DownloadLink(String id, File file, String fileName)
          Constructor
DownloadLink(String id, IModel<File> model)
          Constructor.
DownloadLink(String id, IModel<File> fileModel, IModel<String> fileNameModel)
          Constructor.
DownloadLink(String id, IModel<File> model, String fileName)
          Constructor.
 
Method Summary
 void detachModels()
          Detaches all models
 void 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 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, getModel, getModelObject, getOnClickScript, getPopupSettings, getStatelessHint, getURL, isEnabled, linksTo, onComponentTag, onLinkClicked, setAnchor, setAutoEnable, setModel, setModelObject, setPopupSettings
 
Methods inherited from class org.apache.wicket.markup.html.link.AbstractLink
disableLink, getAfterDisabledLink, getBeforeDisabledLink, getBody, isLinkEnabled, onBeforeRender, onComponentTagBody, onDetach, setAfterDisabledLink, setBeforeDisabledLink, setBody
 
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebPage, getWebRequest, getWebResponse, getWebSession
 
Methods inherited from class org.apache.wicket.MarkupContainer
add, addOrReplace, autoAdd, contains, get, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, internalAdd, internalInitialize, iterator, iterator, onAfterRenderChildren, 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, clearOriginalDestination, configure, continueToOriginalDestination, 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, 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, internalPrepareForRender, internalRenderComponent, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, newMarkupSourcingStrategy, onAfterRender, 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, visitParents, warn, wrap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DownloadLink

public DownloadLink(String id,
                    File file)
Constructor. File name used will be the result of file.getName()

Parameters:
id - component id
file - file to stream to client

DownloadLink

public DownloadLink(String id,
                    IModel<File> model)
Constructor. File name used will be the result of file.getName()

Parameters:
id - component id
model - model that contains the file object

DownloadLink

public DownloadLink(String id,
                    IModel<File> model,
                    String fileName)
Constructor. File name used will be the result of file.getName()

Parameters:
id - component id
model - model that contains the file object
fileName - name of the file

DownloadLink

public DownloadLink(String id,
                    File file,
                    String fileName)
Constructor

Parameters:
id - component id
file - file to stream to client
fileName - name of the file

DownloadLink

public DownloadLink(String id,
                    IModel<File> fileModel,
                    IModel<String> fileNameModel)
Constructor. File name used will be the result of file.getName()

Parameters:
id - component id
fileModel - model that contains the file object
fileNameModel - 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 class Component

onClick

public void onClick()
Description copied from class: Link
Called when a link is clicked.

Specified by:
onClick in class Link<File>

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.


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