Ich versuche Font Awesome in JSF zu integrieren.
%Vor%Der Browser kann die Schriftartdateien jedoch nicht finden. Sie erscheinen als leere Quadrate:
Ich habe erwartet, dass sie wie folgt aussehen:
Wie wird das verursacht und wie kann ich es lösen?
Die Font Awesome-CSS-Datei referenziert standardmäßig diese Font-Dateien über einen relativen Pfad ../
wie unten:
Dies schlägt fehl, wenn die CSS-Datei selbst auf einem anderen Pfad angefordert wird. Der JSF <h:outputStylesheet>
wird das tun, wenn Sie das Attribut library
angeben. Darüber hinaus wird die JSF ein spezielles /javax.faces.resource/*
Präfixmuster für diese Ressourcen verwenden, so dass speziell der JSF-Ressourcen-Handler aufgerufen wird, der Anpassungsfreiheit ermöglicht. Details finden Sie in Was? ist die JSF-Ressourcenbibliothek für und wie sollte sie verwendet werden?
Wurde eine Ordnerstruktur wie unten angegeben,
%Vor%Und das Font Awesome CSS wird wie folgt eingefügt:
%Vor% Dann müssen Sie die CSS-Datei wie folgt bearbeiten, um #{resource}
mapping in EL zu verwenden, um die Font-Dateien im /resources
-Ordner mit dem entsprechenden Bibliotheks- und Ressourcennamen zu referenzieren (und als Bibliotheksname als Abfrage-String-Parameter endet) bereits müssen Sie auch ?
durch &
ersetzen, dies ist nicht notwendig, wenn Sie keinen Bibliotheksnamen verwenden).
Stellen Sie sicher, dass Sie den Server nach dem Bearbeiten der CSS-Datei neu starten. Das Vorhandensein von EL-Ausdrücken in einer bestimmten CSS-Datei wird nur einmal beim ersten Lesen des JSF-Ressourcen-Handlers in der CSS-Datei erkannt und dann anwendungsweit gespeichert.
Falls JSF1091-Warnungen in Serverprotokollen für diese Schriftartendateien wie folgt angezeigt werden:
WARNUNG: JSF1091: Für die Datei [einige Schriftart-Datei] konnte kein MIME-Typ gefunden werden. Um dies zu beheben, fügen Sie den Anwendungen web.xml eine MIME-Typ-Zuordnung hinzu.
Dann müssen Sie sich entsprechend verhalten, indem Sie unter web.xml
:
Wenn Sie die JSF-Dienstprogrammbibliothek OmniFaces verwenden, besteht eine Alternative zum Bearbeiten der CSS-Datei mit dem #{resource}
-Mapping darin, die OmniFaces zu installieren UnmappedResourceHandler
und konfigurieren Sie das FacesServlet
-Mapping gemäß seiner Dokumentation neu. Sie müssen nur sicherstellen, dass Sie nicht mehr über library
auf die Schriftart-CSS-Datei verweisen:
Auch primefaces>5.11
hat Font Awesome
out of the box
Füge einfach context-param
zu deinem web.xml
hinzu:
Dann können Sie Font Awesome
Symbole auf diese Weise anwenden:
Referenzen:
Ich habe den Pfad von oet, ttf, svg, woff Dateien in der "font-awesome.min.css" Datei wie folgt geändert:
%Vor% es funktioniert gut für mich, aber ich suche immer noch nach einer anderen Lösung, weil ich einen dynamischen Pfad haben sollte, nicht eine statische wie "http://localhost:8080/Students_manager/..."
Ich habe den Pfad in "font-awesome.css" geändert und funktioniert gut
%Vor%}
Tags und Links css jsf font-awesome