Я использую .Nowm, когда я применяю условие с eq, тогда оно отлично работает в datatable.
Для справки:

<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

Я хочу знать, почему этот код генерирует это исключение и как я могу использовать здесь "мод"?

0
William 19 Сен 2012 в 10:01

1 ответ

Лучший ответ

Это потому, что результат mod является двойным, а не логическим, и вы пытались обработать этот двойной результат как логическое

Например, #{10 mod 4} приведет к 2 , а не true или false

Кроме того, вы не можете использовать + в выражении EL.

Попробуйте что-то вроде этого

<ace:dataTable id="tbl" ..... rowIndexVar="row" 
    rowStyleClass="#{(row mod 2 eq 0)?'chkred':'chknone'}">
1
Daniel 19 Сен 2012 в 11:35
Классный человек :) он работает, но я хочу сказать вам, что он работал не так, как я хотел. На самом деле я хочу этого, применив это условие # {((row + 2) / 2 mod 0.0 eq 0)? 'chkred ':' chknone '} "он применяет класс chkred к нечетным строкам и класс chknone к четным строкам, но всегда применяет класс chkred :( .. кажется, он всегда возвращает" true "для этого условия. Есть идеи по этому поводу?
 – 
William
19 Сен 2012 в 11:10
Для начала попробуйте записать значение, подобное этому #{(row+2)/2 mod 0.0}, чтобы увидеть, что происходит и какое фактическое значение возвращается в каждой строке ... продолжайте с этого момента ... кстати, не следует ли вам делать что-то подобное rowStyleClass="#{(row mod 2 eq 0)?'chkred':'chknone'}"
 – 
Daniel
19 Сен 2012 в 11:20
Эм изумлен ... это просто печатает "NaN" ... Что это значит?
 – 
William
19 Сен 2012 в 11:26
1
Owo ... только что заметил, что знак +, вы не можете использовать его таким образом в выражении EL, rowStyleClass="#{(row mod 2 eq 0)?'chkred':'chknone'}" работает для вас?
 – 
Daniel
19 Сен 2012 в 11:31