Class VersionedResourceHandler

  • All Implemented Interfaces:
    FacesWrapper<ResourceHandler>

    public class VersionedResourceHandler
    extends DefaultResourceHandler
    Automatically adds version parameter with query string name v to all resource URLs so, in production mode they will be cached forever (or as configured in web.xml), but will not be stale when a new version of the app is deployed.

    NOTE: if resource URL already has v query string parameter, or when it is URL-rewritten to not include "/jakarta.faces.resource" path anymore, then these will be ignored.

    Example:

     faces-config.xml:
     
       <application>
           <resource-handler>org.omnifaces.resourcehandler.VersionedResourceHandler</resource-handler>
       </application>
     
    
     web.xml:
     
       <context-param>
           <!-- Mojarra: 1 year cache, effects production mode only -->
           <param-name>com.sun.faces.defaultResourceMaxAge</param-name>
           <param-value>31536000000</param-value>
       </context-param>
       <context-param>
           <param-name>org.omnifaces.VERSIONED_RESOURCE_HANDLER_VERSION</param-name>
           <!-- Version string could be any string here, or taken from @Named bean -->
           <param-value>#{environmentInfo.version}</param-value>
       </context-param>
     
     

    Example Code (GitHub)

    Since:
    3.9
    Author:
    Lenny Primak
    • Field Detail

      • PARAM_NAME_VERSION

        public static final String PARAM_NAME_VERSION
        The context parameter name to specify value of the version to be appended to the resource URL.
        See Also:
        Constant Field Values
    • Constructor Detail

      • VersionedResourceHandler

        public VersionedResourceHandler​(ResourceHandler wrapped)
        Creates a new instance of this versioned resource handler which wraps the given resource handler. This will also initialize the version based on the context parameter.
        Parameters:
        wrapped - The resource handler to be wrapped.
    • Method Detail

      • decorateResource

        public Resource decorateResource​(Resource resource)
        Description copied from class: DefaultResourceHandler
        Decorate the given resource. This will only be called if no library-specific resource has been requested.

        The default implementation just returns the given resource unmodified.

        Overrides:
        decorateResource in class DefaultResourceHandler
        Parameters:
        resource - The resource to be decorated.
        Returns:
        The decorated resource.