“mod”无法在<ace:datatable> </ace:datatable>中工作

时间:2012-09-19 06:01:08

标签: jsf java-ee datatable icefaces

我正在使用.Nowm当我使用eq应用条件时,它在数据表中工作得很好。
供参考:

<ace:dataTable id="tbl" ..... rowIndexVar="row" 
rowStyleClass="#{((row+2)/2 eq 1)?'chkred':'chknone'}">

但当我使用mod时这样

<ace:dataTable id="tbl" ..... rowIndexVar="row" 
rowStyleClass="#{((row+2)/2 mod 0.0)?'chkred':'chknone'}">

它抛出异常

java.lang.IllegalArgumentException: Cannot convert ? of type class java.lang.Double to class java.lang.Boolean

我想知道为什么这段代码会抛出这个异常,我怎么能在这里使用“mod”?

1 个答案:

答案 0 :(得分:1)

它的原因是mod的结果是双精度而不是布尔值,并且你试图将这个双重结果视为布尔值

例如#{10 mod 4}将导致 2 而不是 true false

此外,您无法在EL表达式中使用+

尝试这样的事情

<ace:dataTable id="tbl" ..... rowIndexVar="row" 
    rowStyleClass="#{(row mod 2 eq 0)?'chkred':'chknone'}">