需要帮助在命令按钮中显示图标图像

时间:2011-05-11 05:27:03

标签: html css jsf jsf-2 primefaces

只是一个基本需求,但无法让它发挥作用。 我想有一个primefaces按钮来显示我的图像,没有任何文字。

但我得到的是一个仅包含^字符的按钮,并且不显示尺寸为16x16的图像。


所以,这是primefaces按钮:

<p:commandButton image="ui-icon-csv" title="CSV Document" ajax="false">
    <p:dataExporter type="csv" target="gridRPBDetails" 
        fileName="#{tInputBean.exportFilename}" />
</p:commandButton>

这是css文件:

.ui-icon-csv {
    background-image: url(images/csv_small.png);
}

这是按钮生成的html:

<button type="submit" onclick=";" 
    name="gridRPBDetails:j_idt82" id="gridRPBDetails:j_idt82" 
    class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" 
    role="button" aria-disabled="false">
        <span class="ui-button-icon-primary ui-icon ui-icon-csv"></span><span class="ui-button-text">CSV Document</span>
</button>

为了证明图像可以访问,我尝试了这个URL,实际上它显示了图片:

http://albert:8080/mywebapp/faces/javax.faces.resource/images/csv_small.png

我正在使用tomcat 7,这些是我的依赖项:

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>2.2.1</version>
</dependency>
<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-api</artifactId>
    <version>2.0.4-b09</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-impl</artifactId>
    <version>2.0.4-b09</version>
    <scope>compile</scope>
</dependency>

任何想法出了什么问题?

谢谢!

4 个答案:

答案 0 :(得分:7)

在使用firebug进行一些调查后,我发现罪魁祸首来自我定义的CSS内容。

所以这些是我为使这项工作所做的改变。


JSF按钮:

<p:commandButton image="ui-icon-xls" title="Excel Document" ajax="false">
    <p:dataExporter type="xls" target="gridRPBDetails" 
        fileName="#{tInputBean.exportFilename}" />
</p:commandButton>

CSS:

.ui-state-default .ui-icon-xls {
    background-image: url(images/excel_small.png);
}

这是生成的html:

<button type="submit" title="Excel Document" onclick=";" 
  name="gridRPBDetails:j_idt81" id="gridRPBDetails:j_idt81" 
  class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only" 
  role="button" aria-disabled="false">
    <span class="ui-button-icon-primary ui-icon ui-icon-xls"></span>
    <span class="ui-button-text">ui-button</span>
</button>

谢谢!

答案 1 :(得分:2)

Primefaces提供graphicImage中显示的<p:commandLink ajax="false"> <p:graphicImage value="/images/excel.png" /> <p:dataExporter type="xls" target="tbl" fileName="cars" /> </p:commandLink>

{{1}}

对某人而言,它可能有用。


* showcase-labs (broken link)。 请注意,在这种情况下,上述代码将无效。

答案 2 :(得分:2)

在图标类名

之前写ui-widget
.ui-widget .ui-icon-xls {
    background-image: url(images/excel_small.png);
}

.ui-state-default不会在其他组件中显示<p:menuitem/><p:menuButton/>

答案 3 :(得分:1)

使用commandButton时,重要的是png文件大小为16 x 16,因为较大的图像可能无法正确显示或根本不显示。