0

JSF-2.0、Mojarra 2.1.19、PrimeFaces 3.4.1

我知道我们可以通过定义我们自己的 css 类来向按钮添加图像,例如:

.imageButton {
  background-image:url(#{resource['images/button.png']});
}

但问题是,图片 url 来自 bean,它对每个用户都有不同的价值,所以给静态图片 url 是行不通的。我需要某事。像那样:

<p:button value="#{loginBean.loggeduser.name}" icon="#{loginBean.loggeduser.picurl}"/>

但正如预期的那样,这不起作用,因为 icon 属性需要一个类名。我也尝试p:graphicImage在按钮内定义一个组件,但看起来不像是一个常规图标。

它应该看起来像这样:

个人资料图片

上图可以用预定义的图标完成,代码如下:

 <p:commandButton value="sth" icon="ui-icon-star"/>

但正如我所说,我不想使用静态图标。

提前致谢。

4

2 回答 2

1

你有几个选择。我将在下面列出其中两个。

  1. 使用内联样式作为按钮的属性:

    style='background: url(#{resource['images/button.png']}) no-repeat;'
    
  2. 在按钮内嵌套图像(请注意,它不适用于命令按钮):

    <h:button ...>
        <h:graphicImage .../>
    </h:button>
    

并在必要时使用其他 CSS 样式进行文本输出。

于 2013-03-14T17:50:18.597 回答
1

我刚刚检查了 primefaces 3.4 手册,我验证了<p:commanButton>它的属性,styleClass所以我想你可以使用它,

<p:button value="#{loginBean.loggeduser.name}" styleClass="#{loginBean.loggeduser.picStyle}"/>

我想在我的支持bean中定义:

public String picStyle() {
  if (userA) {
   //get userA's image
     return "yourcss";
  } else {
     return "default";
  }
}

我不确定这是最好的方法,但我想它应该可以使用style属性

于 2013-03-14T17:54:16.320 回答