【问题标题】:"mod" not working in <ace:datatable>“mod”在 <ace:datatable> 中不起作用
【发布时间】:2012-09-11 10:39:20
【问题描述】:

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

<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”?

【问题讨论】:

    标签: jsf jakarta-ee datatable icefaces


    【解决方案1】:

    它的原因 mod 的结果是 double 而不是 boolean ,而您试图将该 double 结果视为 boolean

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

    另外,您不能在 EL 表达式中使用 +

    试试这样的

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

    【讨论】:

    • awesome stuff man :) 它正在工作,但我想告诉你它没有按我想要的那样工作。实际上我希望通过应用这个条件 #{((row+2)/2 mod 0.0 eq 0)?'chkred':'chknone'}" 它在奇数行上应用 chkred 类,在偶数行上应用 chknone 类,但它总是应用 chkred 类:( .. 对于这种情况,它似乎总是返回“true”。对此有任何想法吗?
    • 开始尝试写出这样的值#{(row+2)/2 mod 0.0} 以查看发生了什么以及每行返回的实际值...从那里继续...顺便说一句,不应该你做这样的事情rowStyleClass="#{(row mod 2 eq 0)?'chkred':'chknone'}"
    • Em 很惊讶.. 它只是打印“NaN”... 这是什么意思?
    • owo...刚刚注意到+ 表示您不能在EL 表达式中这样使用它,rowStyleClass="#{(row mod 2 eq 0)?'chkred':'chknone'}" 是否适合您?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 2017-07-10
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多