直接查看标记会更容易理解我的问题,问题在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提供了不同的样式类。有没有办法只调用一次保持相同逻辑的函数?
''标签进入表格内。
答案 0 :(得分: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'}" />
答案 1 :(得分:0)
为什么不让getSeverity方法将类名作为字符串返回?