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()”函数,三个返回中的每一个都为 outputText 提供了不同的样式类。有没有办法只在保持相同逻辑的情况下调用该函数?

'' 标签进入表格。

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 回答