在JSF <h:outputStylesheet>,<h:outputScript>和<h:graphicImage>组件具有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" />
Run Code Online (Sandbox Code Playgroud)
它有用吗?library这些示例中的值似乎只是重复标记名称已经表示的内容.对于<h:outputStylesheet>它来说,基于标签名称已经很明显它代表了一个"CSS库".与以下内容有什么不同,它们的工作方式相同?
<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="img/logo.png" />
Run Code Online (Sandbox Code Playgroud)
此外,生成的HTML输出有点不同.给定URL模式的上下文路径/contextname和FacesServlet映射*.xhtml,前者生成以下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="" />
Run Code Online (Sandbox Code Playgroud)
而后者在URI的路径中生成以下带有库名的HTML:
<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="" />
Run Code Online (Sandbox Code Playgroud)
后一种方法在事后看来也比前一种方法更有意义.该library属性究竟有用吗?
在XHTML页面中包含另一个XHTML页面的最正确方法是什么?我一直在尝试不同的方式,但都没有.
我想在我的*.xhtml页面上放一个打包游戏.(我使用的是jsf 2和primefaces 3.5)
然而,
当我在xhtml中"翻译"html页面时,我在此脚本中收到错误:
<script>
var el = document.getElementById("pacman");
if (Modernizr.canvas && Modernizr.localstorage &&
Modernizr.audio && (Modernizr.audio.ogg || Modernizr.audio.mp3)) {
window.setTimeout(function () { PACMAN.init(el, "./"); }, 0);
} else {
el.innerHTML = "Sorry, needs a decent browser<br /><small>" +
"(firefox 3.6+, Chrome 4+, Opera 10+ and Safari 4+)</small>";
}
</script>
Run Code Online (Sandbox Code Playgroud)
在线:
if (Modernizr.canvas && Modernizr.localstorage &&
Run Code Online (Sandbox Code Playgroud)
我得到:
实体名称必须紧跟实体引用中的"&".
知道怎么解决这个问题吗?
我已经创建了自己的主题作为单独的Maven项目,并且它已正确加载.
现在我想改变组件的大小.例如,a <p:orderList>.它有一个名为的类ui-orderlist-list,它primefaces.css以固定的200x200维度定义.无论我在我身上做什么theme.css,它都会被这个属性所覆盖,我无法将内容作为<p:orderList>更广泛的内容.
对于其他组件,我可能只想覆盖组件的一个实例,而不是全部.
任何人都可以告诉我,我怎么能做到这一切?
在这些问题之后:
我写了所有来解决JSF2框架的"愚蠢"问题,我无法直接链接到存储在/WEB-INF子文件夹中的页面.之后我做了一些关于Google和Stackoverflow的研究我会知道一件事:我如何构建一个JSF2 Web项目?
特别是,我在哪里放置XHTML页面?
作为这个问题的扩展,我试图将Javascript插入到已经呈现ajax表<h:commandButton />的onclick属性action中.
我想做什么:在列表框中获取所选项目并将其转换为要在JSF中使用的参数FileServlet.即para2=value1¶m=value2¶m=value3
这就是我所拥有的:
<script type ="text/javascript">
function myScript() {
var box = document.getElementbyId('myForm:box');
var length = box.options.length;
var paramstring = "";
for (var i = 0; i < length; i++) {
if (i != (length - 1) {
if (box.options[i].selected) {
paramstring = paramstring + "param=" + box.options[i].value + "&";
}
} else {
paramstring = paramstring + "param=" + box.options[i].value;
}
}
if (document.getElementById('myForm:checkbox').checked) {
window.location='fileServlet? + …Run Code Online (Sandbox Code Playgroud) 我有两个共享大量代码的JSF项目 - java类,xhtml文件,标记库,css和javascript文件等.我的开发环境/平台主要包括Eclipse,Ant,Perforce和Tomcat.
有没有人找到一种方法来创建和组织共享代码,以便公共代码可以保留在一组文件夹中?
Eclipse可以很容易地为java源添加外部文件夹,但不能满足其他文件类型.我很欣赏任何想法.
我经常使用图像属性更改按钮的图像,但有人告诉我,使用.css这是一个很好的做法我试过但我不能,我做错了什么?这就是我做的:
1 - 我的项目资源存储如下:

2 - 这就是我创建style.css以访问图像的方式
.c2 {
background: url(/resources/images/smiley.jpg);
}
Run Code Online (Sandbox Code Playgroud)
3 - 这是我从我的页面正文访问css的方式(我确定这是正确的,因为同一文档中的其他类适用于此页面中的其他标记)
<h:outputStylesheet library="css" name="style.css" />
Run Code Online (Sandbox Code Playgroud)
4 - 这是创建使用适当的css类的示例commandButton的方法
<h:commandButton styleClass="c2"/>
Run Code Online (Sandbox Code Playgroud)
我认为问题出现在.css中,我尝试了几种组合但没有效果:
background-image: url(/resources/images/smiley.jpg);
background: url(resources/images/smiley.jpg);
background: url(smiley.jpg);
background: url(../smiley.jpg);
Run Code Online (Sandbox Code Playgroud)
哪里出错了?
更新 我设法通过以下代码使其工作:
.c2 {
background: url("#{resource['images:smiley.jpg']}");
}
Run Code Online (Sandbox Code Playgroud)
注意我使用css(右)和使用图像属性时的差异(左)

我怎么能解决这个问题,以便显示保持图像?
如何将一个favicon添加到JSF项目并在<link>元素中引用它?
我试过如下:
<h:head>
<link rel="icon" type="image/x-icon" href="images/favicon.ico"/>
...
</h:head>
Run Code Online (Sandbox Code Playgroud)
但是,它没有显示任何图标.
我正在使用JSF/Facelets开发一个项目.我想在我的View XHTML上做一些CSS更改,但是当我在Tomcat服务器中部署我的Web应用程序时没有任何反应.我尝试了很多技巧,但我得到了相同的结果.
无论如何,这是我的"styles.css":
body { width: 750px; }
#header
{
width: 100%;
font-size: 36px;
font-weight: bold;
line-height: 48px;
background-color: navy;
color: white;
}
#footer
{
width: 100%;
font-weight: bold;
background-color: navy;
color: white;
}
Run Code Online (Sandbox Code Playgroud)
这是主要模板"Template.html",包括"Header.html"和"Footer.html",其中我使用标签放置我的"styles.css":
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<h:outputStylesheet name="css/styles.css" />
<!-- i've also tried this one, using the "library" attribute -->
<!--
<h:outputStylesheet library="css" name="styles.css" />
-->
</head>
<h:body>
<h:panelGroup id="page" layout="block">
<h:panelGroup id="header" layout="block">
<ui:insert name="header">
<ui:include …Run Code Online (Sandbox Code Playgroud)