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:
  • Constructor Details

    • Image

      protected Image(String id)
      This constructor can be used if you override getImageResourceReference() or getImageResource()
      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 Component
      resourceReference - The shared image resource used in the src attribute
      resourceReferences - 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 Component
      resourceReference - The shared image resource used in the src attribute
      resourceParameters - The resource parameters
      resourceReferences - 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 Component
      imageResource - The image resource used in the src attribute
      imageResources - The image resource used in the srcset attribute
    • Image

      public Image(String id, IModel<?> model)
      See Also:
    • Image

      public Image(String id, String string)
      Parameters:
      id - See Component
      string - Name of image
      See Also:
  • Method Details

    • rendersPage

      public boolean rendersPage()
      Description copied from interface: IRequestListener
      Does invocation of this listener render the page.
      Specified by:
      rendersPage in interface IRequestListener
      Returns:
      default true, i.e. a RenderPageRequestHandler is schedules after invocation
    • onRequest

      public void onRequest()
      Description copied from interface: IRequestListener
      Called when a request is received.
      Specified by:
      onRequest in interface IRequestListener
    • 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 class Component
      Parameters:
      model - The model
      Returns:
      This
      See Also:
    • getImageResource

      Returns:
      Resource returned from subclass
    • 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 via IComponentInheritedModel.wrapOnInheritance(Component).

      For example a FormComponent has the opportunity to instantiate a model on the fly using its id and the containing Form's model, if the form holds a CompoundPropertyModel.

      Overrides:
      initModel in class Component
      Returns:
      The model
      See Also:
    • 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 class Component
      Parameters:
      tag - Tag to modify
      See Also:
    • buildSrcSetAttribute

      protected void buildSrcSetAttribute(ComponentTag tag)
      Builds the srcset attribute if multiple localizedImageResources are found as varargs
      Parameters:
      tag - the component tag
    • buildSrcAttribute

      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 to AjaxRequestTarget 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 class Component
      Returns:
      whether the component can be stateless
      See Also:
    • onComponentTagBody

      public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag)
      Description copied from class: Component
      Processes the body.
      Overrides:
      onComponentTagBody in class Component
      Parameters:
      markupStream - The markup stream
      openTag - The open tag for the body
      See Also:
    • canCallListener

      public boolean canCallListener()
      Description copied from class: Component
      Checks whether or not an IRequestListener 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 disabled WebMarkupContainer 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 class Component
      Returns:
      true iff the listener method can be invoked on this component
    • getCrossOrigin

      Gets the cross-origin settings
      Returns:
      the cross-origins settings
      See Also:
    • 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