Do czego służy biblioteka zasobów JSF i jak powinna być używana?
JSF<h:outputStylesheet>
, <h:outputScript>
i<h:graphicImage>
komponenty mająlibrary
atrybut. Co to jest i jak należy to wykorzystać? Istnieje wiele przykładów w sieci, które używają go w następujący sposób ze wspólną zawartością / typem plikucss
, js
iimg
(lubimage
) jako nazwa biblioteki w zależności od użytego tagu:
<h:outputStylesheet library="css" name="style.css" />
<h:outputScript library="js" name="script.js" />
<h:graphicImage library="img" name="logo.png" />
Jak to jest przydatne? Thelibrary
wartość w tych przykładach wydaje się być po prostu powtarzaniem wszystkiego, co już zostało reprezentowane przez nazwę znacznika. Dla<h:outputStylesheet>
opiera się na nazwie znacznika już oczywistej, że reprezentuje „bibliotekę CSS”. Jaka jest różnica z następującymi, które również działają w ten sam sposób?
<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="img/logo.png" />
Ponadto wygenerowany wynik HTML jest nieco inny. Biorąc pod uwagę ścieżkę kontekstu/contextname
iFacesServlet
mapowanie wzorca adresu URL*.xhtml
, pierwszy generuje następujący kod HTML z nazwą biblioteki jako parametr żądania:
<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="" />
Podczas gdy ten drugi generuje następujący kod HTML z nazwą biblioteki tylko w ścieżce URI:
<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="" />
To drugie podejście z perspektywy czasu jest również bardziej sensowne niż poprzednie. Jak dokładnie jestlibrary
przydatny atrybut?