Class Image
- java.lang.Object
-
- org.apache.wicket.Component
-
- org.apache.wicket.markup.html.WebComponent
-
- org.apache.wicket.markup.html.image.Image
-
- All Implemented Interfaces:
Serializable
,IEventSink
,IEventSource
,IFeedbackContributor
,IConverterLocator
,IMetadataContext<Serializable,Component>
,IRequestListener
,IHeaderContributor
,IRequestableComponent
,IHierarchical<Component>
,IClusterable
- Direct Known Subclasses:
NonCachingImage
,Source
public class Image extends WebComponent implements IRequestListener
An Image component displays localizable image resources.For details of how Images load, generate and manage images, see
LocalizedImageResource
. The first ResourceReference / ImageResource is used for the src attribute within the img tag, all following are applied to the srcset. If setXValues(String... values) is used the values are set behind the srcset elements in the order they are given to the setXValues(String... valus) method. The separated values in the sizes attribute are set with setSizes(String... sizes)- Author:
- Jonathan Locke, Tobias Soloschenko
- See Also:
NonCachingImage
, 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 Modifier Constructor Description protected
Image(String id)
This constructor can be used if you overridegetImageResourceReference()
orgetImageResource()
Image(String id, String string)
Image(String id, IModel<?> model)
Image(String id, IResource imageResource, IResource... imageResources)
Constructs an image directly from an image resource.Image(String id, ResourceReference resourceReference, PageParameters resourceParameters, ResourceReference... resourceReferences)
Constructs an image from an image resourcereference.Image(String id, ResourceReference resourceReference, ResourceReference... resourceReferences)
Constructs an image from an image resourcereference.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addAntiCacheParameter(ComponentTag tag)
Adds random noise to the url every request to prevent the browser from caching the image.protected void
buildSizesAttribute(ComponentTag tag)
builds the sizes attribute of the img tagprotected String
buildSrcAttribute(ComponentTag tag)
Builds the src attributeprotected void
buildSrcSetAttribute(ComponentTag tag)
Builds the srcset attribute if multiple localizedImageResources are found as varargsboolean
canCallListener()
Checks whether or not anIRequestListener
can be invoked on this component.CrossOrigin
getCrossOrigin()
Gets the cross origin settingsprotected IResource
getImageResource()
protected ResourceReference
getImageResourceReference()
protected boolean
getStatelessHint()
Returns whether the component can be stateless.protected IModel<?>
initModel()
Called when a null model is about to be retrieved in order to allow a subclass to provide an initial model.protected void
onComponentTag(ComponentTag tag)
Processes the component tag.void
onComponentTagBody(MarkupStream markupStream, ComponentTag openTag)
Processes the body.void
onRequest()
Called when a request is received.void
removeSizes()
Removes all sizes values.void
removeXValues()
Removes all x values from the image src setboolean
rendersPage()
Does invocation of this listener render the page.void
setCrossOrigin(CrossOrigin crossOrigin)
Sets the cross origin settings
ANONYMOUS: Cross-origin CORS requests for the element will not have the credentials flag set.
USE_CREDENTIALS: Cross-origin CORS requests for the element will have the credentials flag set.
NO_CORS: The empty string is also a valid keyword, and maps to the Anonymous state.Component
setDefaultModel(IModel<?> model)
Sets the given model.void
setImageResource(IResource imageResource)
void
setImageResourceReference(ResourceReference resourceReference)
void
setImageResourceReference(ResourceReference resourceReference, PageParameters parameters)
void
setImageResourceReferences(PageParameters parameters, ResourceReference... resourceReferences)
void
setImageResources(IResource... imageResources)
void
setSizes(String... sizes)
void
setXValues(String... values)
protected boolean
shouldAddAntiCacheParameter()
Adding an image toAjaxRequestTarget
most of the times mean that the image has changes and must be re-rendered.-
Methods inherited from class org.apache.wicket.markup.html.WebComponent
getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession, onRender
-
Methods inherited from class org.apache.wicket.Component
add, addStateChange, beforeRender, canCallListenerAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, createConverter, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, get, 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, internalInitialize, internalOnModelChanged, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, newMarkupSourcingStrategy, onAfterRender, onBeforeRender, onConfigure, onDetach, onEvent, onInitialize, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, 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, toString, toString, urlFor, urlFor, urlFor, urlForListener, urlForListener, visitParents, visitParents, warn, wrap
-
-
-
-
Constructor Detail
-
Image
protected Image(String id)
This constructor can be used if you overridegetImageResourceReference()
orgetImageResource()
- Parameters:
id
-
-
Image
public Image(String id, ResourceReference resourceReference, ResourceReference... resourceReferences)
Constructs an image from an image resourcereference. That resource reference will bind its resource to the current SharedResources. If you are using non sticky session clustering and the resource reference is pointing to a Resource that isn't guaranteed to be on every server, for example a dynamic image or resources that aren't added with a IInitializer at application startup. Then if only that resource is requested from another server, without the rendering of the page, the image won't be there and will result in a broken link.- Parameters:
id
- See ComponentresourceReference
- The shared image resource used in the src attributeresourceReferences
- The shared image resources used in the srcset attribute
-
Image
public Image(String id, ResourceReference resourceReference, PageParameters resourceParameters, ResourceReference... resourceReferences)
Constructs an image from an image resourcereference. That resource reference will bind its resource to the current SharedResources. If you are using non sticky session clustering and the resource reference is pointing to a Resource that isn't guaranteed to be on every server, for example a dynamic image or resources that aren't added with a IInitializer at application startup. Then if only that resource is requested from another server, without the rendering of the page, the image won't be there and will result in a broken link.- Parameters:
id
- See ComponentresourceReference
- The shared image resource used in the src attributeresourceParameters
- The resource parametersresourceReferences
- The shared image resources used in the srcset attribute
-
Image
public Image(String id, IResource imageResource, IResource... imageResources)
Constructs an image directly from an image resource. This one doesn't have the 'non sticky session clustering' problem that the ResourceReference constructor has. But this will result in a non 'stable' url and the url will have request parameters.- Parameters:
id
- See ComponentimageResource
- The image resource used in the src attributeimageResources
- The image resource used in the srcset attribute
-
Image
public Image(String id, IModel<?> model)
- See Also:
Component(String, IModel)
-
Image
public Image(String id, String string)
- Parameters:
id
- See Componentstring
- Name of image- See Also:
Component(String, IModel)
-
-
Method Detail
-
rendersPage
public boolean rendersPage()
Description copied from interface:IRequestListener
Does invocation of this listener render the page.- Specified by:
rendersPage
in interfaceIRequestListener
- Returns:
- default
true
, i.e. aRenderPageRequestHandler
is schedules after invocation
-
onRequest
public void onRequest()
Description copied from interface:IRequestListener
Called when a request is received.- Specified by:
onRequest
in interfaceIRequestListener
-
setImageResource
public void setImageResource(IResource imageResource)
- Parameters:
imageResource
- The new ImageResource to set.
-
setImageResources
public void setImageResources(IResource... imageResources)
- Parameters:
imageResources
- the new ImageResource to set.
-
setImageResourceReference
public void setImageResourceReference(ResourceReference resourceReference)
- Parameters:
resourceReference
- The shared ImageResource to set.
-
setImageResourceReference
public void setImageResourceReference(ResourceReference resourceReference, PageParameters parameters)
- Parameters:
resourceReference
- The resource reference to set.parameters
- the parameters to be applied to the localized image resource
-
setImageResourceReferences
public void setImageResourceReferences(PageParameters parameters, ResourceReference... resourceReferences)
- Parameters:
parameters
- Set the resource parameters for the resource.resourceReferences
- The resource references to set.
-
setXValues
public void setXValues(String... values)
- Parameters:
values
- the x values to be used in the srcset
-
removeXValues
public void removeXValues()
Removes all x values from the image src set
-
setSizes
public void setSizes(String... sizes)
- Parameters:
sizes
- the sizes to be used in the size
-
removeSizes
public void removeSizes()
Removes all sizes values. The corresponding attribute will not be rendered anymore.
-
setDefaultModel
public Component setDefaultModel(IModel<?> model)
Description copied from class:Component
Sets the given model.WARNING: DO NOT OVERRIDE THIS METHOD UNLESS YOU HAVE A VERY GOOD REASON FOR IT. OVERRIDING THIS MIGHT OPEN UP SECURITY LEAKS AND BREAK BACK-BUTTON SUPPORT.
- Overrides:
setDefaultModel
in classComponent
- Parameters:
model
- The model- Returns:
- This
- See Also:
Component.setDefaultModel(org.apache.wicket.model.IModel)
-
getImageResource
protected IResource getImageResource()
- Returns:
- Resource returned from subclass
-
getImageResourceReference
protected ResourceReference getImageResourceReference()
- Returns:
- ResourceReference returned from subclass
-
initModel
protected IModel<?> initModel()
Description copied from class:Component
Called when a null model is about to be retrieved in order to allow a subclass to provide an initial model.By default this implementation looks components in the parent chain owning a
IComponentInheritedModel
to provide a model for this component viaIComponentInheritedModel.wrapOnInheritance(Component)
.For example a
FormComponent
has the opportunity to instantiate a model on the fly using itsid
and the containingForm
's model, if the form holds aCompoundPropertyModel
.- Overrides:
initModel
in classComponent
- Returns:
- The model
- See Also:
Component.initModel()
-
onComponentTag
protected void onComponentTag(ComponentTag tag)
Description copied from class:Component
Processes the component tag. Overrides of this method most likely should call the super implementation.- Overrides:
onComponentTag
in classComponent
- Parameters:
tag
- Tag to modify- See Also:
Component.onComponentTag(ComponentTag)
-
buildSrcSetAttribute
protected void buildSrcSetAttribute(ComponentTag tag)
Builds the srcset attribute if multiple localizedImageResources are found as varargs- Parameters:
tag
- the component tag
-
buildSrcAttribute
protected String buildSrcAttribute(ComponentTag tag)
Builds the src attribute- Parameters:
tag
- the component tag- Returns:
- the value of the src attribute
-
buildSizesAttribute
protected void buildSizesAttribute(ComponentTag tag)
builds the sizes attribute of the img tag- Parameters:
tag
- the component tag
-
shouldAddAntiCacheParameter
protected boolean shouldAddAntiCacheParameter()
Adding an image toAjaxRequestTarget
most of the times mean that the image has changes and must be re-rendered.With this method the user may change this default behavior for some of her images.
- Returns:
true
to add the anti cache request parameter,false
- otherwise
-
addAntiCacheParameter
protected void addAntiCacheParameter(ComponentTag tag)
Adds random noise to the url every request to prevent the browser from caching the image.- Parameters:
tag
-
-
getStatelessHint
protected boolean getStatelessHint()
Description copied from class:Component
Returns whether the component can be stateless. Also the component behaviors must be stateless, otherwise the component will be treat as stateful. In order for page to be stateless (and not to be stored in session), all components (and component behaviors) must be stateless.- Overrides:
getStatelessHint
in classComponent
- Returns:
- whether the component can be stateless
- See Also:
Component.getStatelessHint()
-
onComponentTagBody
public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag)
Description copied from class:Component
Processes the body.- Overrides:
onComponentTagBody
in classComponent
- Parameters:
markupStream
- The markup streamopenTag
- The open tag for the body- See Also:
Component.onComponentTagBody(MarkupStream, ComponentTag)
-
canCallListener
public boolean canCallListener()
Description copied from class:Component
Checks whether or not anIRequestListener
can be invoked on this component. Usually components deny these invocations if they are either invisible or disabled in hierarchy.WARNING: be careful when overriding this method because it may open security holes - such as allowing a user to click on a link that should be disabled.
Example usecase for overriding: Suppose you are building an component that displays images. The component generates a callback to itself using
IRequestListener
interface and uses this callback to stream image data. If such a component is placed inside a disabledWebMarkupContainer
we still want to allow the invocation of the request listener callback method so that image data can be streamed. Such a component would override this method and return true.- Overrides:
canCallListener
in classComponent
- Returns:
- true iff the listener method can be invoked on this component
-
getCrossOrigin
public CrossOrigin getCrossOrigin()
Gets the cross origin settings- Returns:
- the cross origins settings
- See Also:
setCrossOrigin(CrossOrigin)
-
setCrossOrigin
public void setCrossOrigin(CrossOrigin crossOrigin)
Sets the cross origin settings
ANONYMOUS: Cross-origin CORS requests for the element will not have the credentials flag set.
USE_CREDENTIALS: Cross-origin CORS requests for the element will have the credentials flag set.
NO_CORS: The empty string is also a valid keyword, and maps to the Anonymous state. The attribute's invalid value default is the Anonymous state. The missing value default, used when the attribute is omitted, is the No CORS state- Parameters:
crossOrigin
- the cross origins settings to set
-
-