java - 在 jsf 标签内调用 if 函数两次

标签 java function jsf if-statement

直接查看标签会更容易理解我的问题,问题出在 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/

相关文章:

jsf - 如何编号JSF错误消息并将编号附加到无效组件

jsf - 在p:wizard中重新定位导航按钮

java - 编译基本 java 代码时出错

java - fragment 间通信 onclick textview 为 null 但在 oncreate View 中 textview 存在

java - 将文件存储在字符串中

c - 如何在 C 中检查 char 数组的前两个字符?

c - 如何在 C 中使用以度为单位的三角函数?

java - 资源规范不允许错误

javascript - 在 React 中,如何调用另一个组件中的函数?

java - JSF/Spring 如何使用h :selectOneMenu without SelectItem objects