[JAVA] Fügen Sie der URL, die von <h: outputScript> <h: outputStylesheet> von JSF ausgegeben wird, beliebige Parameter hinzu

Einführung

Dies ist eine Methode zum dynamischen Hinzufügen von Parametern zur Erstellungszeit, um das neueste von JSF Facelets geladene Javascript und CSS abzurufen. Vor der Änderung) vendor.js Nach Änderung) vendor.js? V = 12345678

Auf Wiedersehen zu Super Reload.

Verfahren

Erstellen Sie eine Klasse, die die ResourceHandlerWrapper-Klasse erbt.

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)) {
            //Ziel ist Javascript und CSS
            return resource;
        }

        return new ResourceWrapper() {

            @Override
            public String getRequestPath() {
                return super.getRequestPath() + "&(Beliebige Abfrageparameter)";
            }

            @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;
    }

}

Registrieren Sie den oben erstellten Handler in der Datei sites-config.xml.

WEB-INF/faces-config.xml


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

Referenz

Recommended Posts

Fügen Sie der URL, die von <h: outputScript> <h: outputStylesheet> von JSF ausgegeben wird, beliebige Parameter hinzu
Fügen Sie das Datum zu den von gcutil erfassten GC-Statistiken hinzu und geben Sie es aus.
Ausgabe des Buches "Einführung in Java"
So machen Sie https zum Schema der URL, die vom URL-Helfer von Rails generiert wurde
Ausgabe der Verwendung der Slice-Methode
[Java] So erhalten Sie die URL der Übergangsquelle
Format der Protokollausgabe von Tomcat selbst in Tomcat 8
Konvertieren Sie das Array von error.full_messages in Zeichen und geben Sie es aus
[Rails] So erhalten Sie den Inhalt starker Parameter
Ich möchte die Protokollausgabeeinstellung von UtilLoggingJdbcLogger ändern
[Java] Um die Typinformationen der Typparameter zur Laufzeit zu kennen
Hinzufügen von Elementen ohne Angabe der Länge des Arrays
[Rails] So zeigen Sie eine Liste der Beiträge nach Kategorie an
Fügen Sie javac die Option -parameters hinzu, um Argumentnamen durch Reflektion zu erhalten