我正在制作一个使用JSF和richfaces的网站,但我需要在下拉菜单标签上做一些背景图片。我看到你可以通过
来使用style属性.rich-ddmenu-label {
background-image: url("images/the_image.gif");
}
但这似乎甚至没有尝试将图像放在任何地方。
我可以使用
来使用图像<h:graphicImage/>
我不知道怎么把文字放在它上面。
我做错了什么?如何在某些文本后插入背景图像?
答案 0 :(得分:66)
我在 JSF 2.0 时遇到了同样的问题。我不得不使用css而且相对路径的解决方案对我来说也不起作用(像Choghere发布的那样)。
在我的书中,我读到当您使用Facelets作为VDL(查看声明语言)时,甚至可以在纯HTML页面中使用表达式。所以我有了把EL直接放在我的CSS中的想法。注意:我不必更改文件名或任何内容。
这就是我所做的。 但首先是我的文件结构
现在来了CSS
.someclass {
background-image:url("#{resource['images:logo.png']}");
}
在这种情况下,资源是JSF 2的隐式对象, images 是库,其中JSF应该是look(jsf期望资源下的所有库/文件,至少是默认的ResourceHandler),然后是资源的名称。
对于更深层的结构,它将是
#{resource['images/folder:logo.png']}
希望有所帮助;)
答案 1 :(得分:5)
假设有问题的元素正在应用class="rich-ddmenu-label"
,问题很可能是背景图片的路径。
路径相对于CSS所在的位置。如果它在外部文件中,它应该是相对的,例如:
/css/styles.css
/images/the_image.gif
CSS应该是:
background-image: url("../images/the_image.gif");
如果CSS在HTML页面上内联,则它将相对于当前路径。因此,如果页面位于http://server/path/to/page
,那么当您可能需要http://server/path/to/page/images/the_image.gif
时,它会在http://server/images/the_image.gif
处查找图片。
如果没有回复,请发布生成的HTML。
答案 2 :(得分:2)
您是否关注Richfaces demo site上的示例?即。使用小平面并将图像和文本放在封闭元素(例如,跨度或div)中
<rich:dropDownMenu>
<f:facet name="label">
<h:panelGroup>
<h:graphicImage value="/images/icons/copy.gif" styleClass="pic"/>
<h:outputText value="File"/>
</h:panelGroup>
</f:facet>
<rich:menuItem submitMode="ajax" value="New"
action="#{ddmenu.doNew}" icon="/images/icons/create_doc.gif">
</rich:menuItem>
...
</rich:dropDownMenu>
答案 3 :(得分:2)
我的文件夹结构如下:
网页 - &gt;资源 - &gt; css // css页
网页 - &gt;资源 - &gt; pics // images
网页// xhtml文件
尝试以下方法:
background-image :url("../pics/logo.gif");
..将你提升到一个文件夹级别 / pics将你带到pics目录 /logo.gif为您提供文件
希望这有帮助。
答案 4 :(得分:1)
我得到了这个解决方案: 使用此内容创建一个新的.css文件
body {
background-image: url(../resources/images/Fondo.GIF);
}
这将以与html相同的方式加载文件。 有了这个,您将能够在正文级别(在整个页面上)加载背景文件。在病房之后,您可以在jsf文件中使用此指令加载css文件:
<h:head>
<h:outputStylesheet name="ps-pagolinea.css" library="css" />
<h:outputScript name="corrigePoliza.js" library="scripts"/>
</h:head>