我使用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中编写一个方法(或用户实体中的瞬态方法)来比较两个日期expDate
和currentDate
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'