素面数据表,嵌套条件行着色



我使用PF 3.4.1和JSF。我想有一个css行类的条件选择取决于两个条件:

一个样式应该用于被禁用的对象,另一个用于过期的对象。

我可以同时放置这两个条件,但是,很明显,这会导致css类的冗余。我想有一个类的覆盖,以便在过期的对象上具有禁用对象的css类的优势。

应该像这样的结构:

if (expired){ if (disabled){ return css1; } return css2 }

但是,这是代码:

<p:dataTable id="results" var="utente" value="#{searchController.userList}" 
             paginator="true" rows="10" 
             rowStyleClass="#{user.expDate le user.currentDate ? 'rowdatatable3' : 'rowdatatable2'} #{user.enabled eq 'FALSE' ? 'rowdatatable1' : 'rowdatatable2'}"
             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
             rowsPerPageTemplate="10,25,50">

rowdatatableX是css样式。

使用这段代码,结果总是rowdatatable2或rowdatable1,而不是第三个选项。

我的想法是这样的:

rowStyleClass="#{user.expDate le user.currentDate ? #{user.enabled eq 'FALSE' ? 'rowdatatable1' : 'rowdatatable3'} : 'rowdatatable2'} "

. .但是它不工作。

请帮忙找出解决办法。谢谢。

尝试在Bean中编写一个方法(或用户实体中的瞬态方法)来比较两个日期expDatecurrentDate

public boolean isExpired() {
    return getExpDate.before(getCurrentDate);    
}

如果user.enabled为布尔类型,则跳过FALSE的比较。因为你的表变量是utente,你应该使用它!你的表达式应该是这样的

"#{utente.expired ? (utente.enabled ? 'rowdatatable1' : 'rowdatatable3') : 'rowdatatable2'}"

:

IF expired AND enabled -> 'rowdatatable1'
IF expired AND disabled -> 'rowdatatable3'
IF NOT expired -> 'rowdatatable2'

相关内容

  • 没有找到相关文章