最佳答案
JSF的<h:outputStylesheet>
, <h:outputScript>
和<h:outputScript>
0组件有一个library
属性。这是什么,该如何使用?在web上有很多例子,它们使用常见的内容/文件类型css
, js
和img
(或image
)作为库名,具体取决于所使用的标记:
<h:outputStylesheet library="css" name="style.css" />
<h:outputScript library="js" name="script.js" />
<h:graphicImage library="img" name="logo.png" />
它有什么用?这些例子中的library
值似乎只是重复标记名称所表示的内容。对于<h:outputStylesheet>
,它基于标记名,很明显它代表了一个“CSS库”。这和下面的有什么区别呢?
<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="img/logo.png" />
此外,生成的HTML输出也略有不同。给定/contextname
和FacesServlet
的上下文路径映射到*.xhtml
的URL模式上,前者以库名作为请求参数生成以下HTML:
<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="" />
而后者生成了下面的HTML,库名正好在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="" />
事后看来,后一种方法也比前一种方法更有意义。library
属性究竟是如何有用的?