0

JSF-2.0、Mojarra 2.1.19、PrimeFaces 3.4.1

次のような独自のcssクラスを定義することで、ボタンに画像を追加できることを知っています。

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

ただし、問題は、画像のURLがBeanから取得されており、ユーザーごとに値が異なるため、静止画像のURLを指定しても機能しないことです。sthが必要です。そのように:

<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

いくつかのオプションがあります。以下にそのうちの2つをリストします。

  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 に答える