Я использую .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
Я хочу знать, почему этот код генерирует это исключение и как я могу использовать здесь "мод"?
1 ответ
Это потому, что результат mod
является двойным, а не логическим, и вы пытались обработать этот двойной результат как логическое
Например, #{10 mod 4}
приведет к 2 , а не true или false
Кроме того, вы не можете использовать +
в выражении EL.
Попробуйте что-то вроде этого
<ace:dataTable id="tbl" ..... rowIndexVar="row"
rowStyleClass="#{(row mod 2 eq 0)?'chkred':'chknone'}">
Похожие вопросы
Новые вопросы
jsf
JSF, Jakarta Server Faces (ранее известный как JavaServer Faces) - это структура представления моделей - ведущая, обычно используемая для создания веб-приложений на основе HTML-формы. Использование стандартных компонентов и набора визуализации, представления HTML-готовки HTML могут быть определены с использованием тегов Facelets или JSP и подключены к моделированию данных и логике приложений через Bearing Beans.
#{(row+2)/2 mod 0.0
}, чтобы увидеть, что происходит и какое фактическое значение возвращается в каждой строке ... продолжайте с этого момента ... кстати, не следует ли вам делать что-то подобноеrowStyleClass="#{(row mod 2 eq 0)?'chkred':'chknone'}"
+
, вы не можете использовать его таким образом в выражении EL,rowStyleClass="#{(row mod 2 eq 0)?'chkred':'chknone'}"
работает для вас?