[JAVA] Ajouter des paramètres arbitraires à la sortie de l'URL par <h: outputScript> <h: outputStylesheet> de JSF

introduction

C'est une méthode pour ajouter dynamiquement des paramètres au moment de la construction pour obtenir les derniers Javascript et CSS chargés par JSF Facelets. Avant modification) vendor.js Après modification) vendor.js? V = 12345678

Au revoir à Super Reload.

procédure

Créez une classe qui hérite de la classe ResourceHandlerWrapper.

CustomResourceHandler.java


package com.sample;

import java.util.Arrays;
import javax.faces.application.Resource;
import javax.faces.application.ResourceHandler;
import javax.faces.application.ResourceHandlerWrapper;
import javax.faces.application.ResourceWrapper;

public class CustomResourceHandler extends ResourceHandlerWrapper {

    private final ResourceHandler wrapped;

    public CustomResourceHandler(ResourceHandler wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public Resource createResource(String resourceName) {
        return createResource(resourceName, null, null);
    }

    @Override
    public Resource createResource(String resourceName, String libraryName) {
        return createResource(resourceName, libraryName, null);
    }

    @Override
    public Resource createResource(String resourceName, String libraryName, String contentType) {
        final Resource resource = super.createResource(resourceName, libraryName, contentType);

        if (resource == null) {
            return null;
        }

        if (!Arrays.asList("js", "css").contains(libraryName)) {
            //Ciblé par Javascript et CSS
            return resource;
        }

        return new ResourceWrapper() {

            @Override
            public String getRequestPath() {
                return super.getRequestPath() + "&(Paramètres de requête arbitraires)";
            }

            @Override // Necessary because this is missing in ResourceWrapper (will be fixed in JSF 2.2).
            public String getResourceName() {
                return resource.getResourceName();
            }

            @Override // Necessary because this is missing in ResourceWrapper (will be fixed in JSF 2.2).
            public String getLibraryName() {
                return resource.getLibraryName();
            }

            @Override // Necessary because this is missing in ResourceWrapper (will be fixed in JSF 2.2).
            public String getContentType() {
                return resource.getContentType();
            }

            @Override
            public Resource getWrapped() {
                return resource;
            }
        };
    }

    @Override
    public ResourceHandler getWrapped() {
        return wrapped;
    }

}

Enregistrez le gestionnaire créé ci-dessus dans faces-config.xml.

WEB-INF/faces-config.xml


<application>
  <resource-handler>com.sample.CustomResourceHandler</resource-handler>
</application>

référence

Recommended Posts

Ajouter des paramètres arbitraires à la sortie de l'URL par <h: outputScript> <h: outputStylesheet> de JSF
Ajoutez la date aux statistiques GC acquises par gcutil et affichez-la.
Sortie du livre "Introduction à Java"
Comment faire de https le schéma de l'URL générée par l'assistant d'URL de Rails
Sortie de la façon d'utiliser la méthode slice
[Java] Comment obtenir l'URL de la source de transition
Format de la sortie du journal par Tomcat lui-même dans Tomcat 8
Convertit le tableau d'erreurs.full_messages en caractères et sortie
[Rails] Comment obtenir le contenu des paramètres forts
Je souhaite modifier le paramètre de sortie du journal de UtilLoggingJdbcLogger
[Java] Pour connaître les informations de type des paramètres de type à l'exécution
Comment ajouter des éléments sans spécifier la longueur du tableau
[Rails] Comment afficher une liste de messages par catégorie
Ajoutez l'option -parameters à javac pour obtenir les noms d'arguments par réflexion