Wozu dient die JSF-Ressourcenbibliothek und wie soll sie verwendet werden?
Die JSF<h:outputStylesheet>
, <h:outputScript>
und<h:graphicImage>
Komponenten haben einelibrary
Attribut. Was ist das und wie soll das verwendet werden? Es gibt viele Beispiele im Web, die es wie folgt mit dem allgemeinen Inhalt / Dateityp verwendencss
, js
undimg
(oderimage
) als Bibliotheksname abhängig vom verwendeten Tag:
<h:outputStylesheet library="css" name="style.css" />
<h:outputScript library="js" name="script.js" />
<h:graphicImage library="img" name="logo.png" />
Wie ist es nützlich? Daslibrary
Der Wert in diesen Beispielen scheint nur das zu wiederholen, was bereits durch den Tag-Namen dargestellt wurde. Für ein<h:outputStylesheet>
Es basiert auf dem Tag-Namen, der bereits offensichtlich ist, dass es eine "CSS-Bibliothek" darstellt. Was ist der Unterschied zu dem Folgenden, das genauso funktioniert?
<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="img/logo.png" />
Auch die generierte HTML-Ausgabe ist etwas anders. Gegeben ein Kontextpfad von/contextname
undFacesServlet
Mapping auf ein URL-Muster von*.xhtml
Ersteres generiert den folgenden HTML-Code mit dem Bibliotheksnamen als Anforderungsparameter:
<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/style.css.xhtml?ln=css" />
<script type="text/javascript" src="/contextname/javax.faces.resource/script.js.xhtml?ln=js"></script>
<img src="/contextname/javax.faces.resource/logo.png.xhtml?ln=img" alt="" />
Während letztere den folgenden HTML-Code mit dem Bibliotheksnamen nur im Pfad der URI generiert:
<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/css/style.css.xhtml" />
<script type="text/javascript" src="/contextname/javax.faces.resource/js/script.js.xhtml"></script>
<img src="/contextname/javax.faces.resource/img/logo.png.xhtml" alt="" />
Der letztgenannte Ansatz ist im Nachhinein auch sinnvoller als der erstgenannte. Wie genau ist das?library
Attribut dann nützlich?