2

我第一次在我的 Web 项目中使用 primefaces 并使用 rowStyleClass 为我的数据表行动态着色
rowStyleClass="#{alar.severity eq 'Major' ? 'major' : null}"
但是有没有办法检查 rowStyleClass 中的多个条件?我想检查严重性主要、次要和正常。如何执行多个条件?

4

2 回答 2

4

考虑到您的情况,一般来说,如果您使用小写严重性作为行类并且您不想排除任何严重性,以下应该可以解决问题:

rowStyleClass="#{not empty alar.severity ? alar.severity.toLowerCase() : null}"

另一个更具扩展性和可读性的解决方案是定义一个 bean-method,它以alar参数为参数并返回样式类:

public String alarStyleClass(Alar alar) {
    if(alar.severity.equals("Major")) return "major";
    if(alar.severity.equals("Minor")) return "minor";
    if(alar.severity.equals("Normal")) return "normal";
    return null;
}

对于rowStyleClass

rowStyleClass="#{bean.alarStyleClass(alar)}"

我想到的最后一个可能的解决方案是直接在rowStyleClass-attribute 中进行所有检查:

rowStyleClass="#{alar.severity eq 'Major' ? 'major' : 
                 alar.severity eq 'Minor' ? 'minor' :
                 alar.severity eq 'Normal' ? 'normal' :
                 null}"
于 2013-08-22T07:48:35.377 回答
3

只需级联条件:

rowStyleClass="#{alar.severity eq 'Major'  ? 'major'  : 
                (alar.severity eq 'Normal' ? 'normal' : 
                (alar.severity eq 'Minor'  ? 'minor' : null))}">

但它会很快变得不清楚,所以不要经常级联。

于 2013-08-22T07:24:00.233 回答