1

タグを直接見ると、私の問題を理解しやすくなります。質問は、styleClass属性内にあります。

<h:outputText value="#{prod.actualStock}" 
styleClass="
#{productBean.getSeverity(prod.actualStock, prod.replacementAlertLevel).equals('INFO') ?
'severity-info' : productBean.getSeverity(prod.actualStock, prod.replacementAlertLevel).equals('WARN') ?
'severity-warn' : 'severity-danger'}" />

ここで、「getSeverity()」関数を2回呼び出していることに注意してください。3つの戻り値のそれぞれが、outputTextに異なるスタイルクラスを提供します。同じロジックを維持しながら、関数を1回だけ呼び出す方法はありますか?

''タグはテーブル内に入ります。

4

2 に答える 2

1

ProductBeanの結果を保持する別の属性をクラスに追加しProductBean#getSeverity、それをマネージドBeanに設定してから、<h:dataTable>

@ViewScoped
@ManagedBean
public class Bean {
    private List<ProductBean> productBean;
    //getters and setters...

    //I'm assuming you fill the list here
    @PostConstruct
    public void init() {
        productBean = ...
        for(ProductBean pb : productBean) {
            pb.setSeverityValue(pb.getSeverity(<parameters>));
        }
    }
}

JSFコードでは、プロパティを呼び出すだけです

<h:outputText value="#{prod.actualStock}"
    styleClass="#{productBean.severityValue.equals('INFO') ? 'severity-info' : productBean.severityValue.equals('WARN') ? 'severity-warn' : 'severity-danger'}" />
于 2012-10-02T20:48:52.303 に答える
0

getSeverityメソッドがクラス名を文字列として返すようにしないのはなぜですか?

于 2012-10-02T20:44:04.997 に答える