直接查看标签会更容易理解我的问题,问题出在 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()”函数,三个返回中的每一个都为输出文本提供了不同的样式类。有没有办法只调用一次函数并保持相同的逻辑?
“”标签位于表格内。
最佳答案
您可以在 ProductBean
中添加另一个属性保存 ProductBean#getSeverity
结果的类并且在 <h:dataTable>
中使用它之前将其设置在托管 bean 中
@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'}" />
关于java - 在 jsf 标签内调用 if 函数两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697974/