我有一个数据表和一个收集器。数据表中的每一行都有一个按钮,该按钮将相应的行添加到收集器。我想为这个数据表添加条件着色。条件是所选行是否在收集器中。
<p:dataTable rowStyleClass="#{backingBean.selectedMemberList.contains(aMember) ? 'passive' : 'active'}" style="width: 100%;" id="dTable" var="aMember" value="#{backingBean.memberList}">
<p:column>
...
</p:column>
<p:column>
<p:commandButton id="btn_add" value="Add" update=":mf:op" process=":mf:op_uk">
<p:collector value="#{aMember}" addTo="#{backingBean.selectedMemberList}" />
</p:commandButton>
</p:column>
后备豆:
List<Member> selectedMemberList;
List<Member> memberList;
//getter and setter methods
上面的代码做了被动样式类,但不添加主动样式。我认为这可能是因为我无法将 var(请求范围)传递给支持 bean。所以我尝试将值绑定到支持 bean 值:
<p:dataTable binding="#{backingBean.anotherMember}" rowStyleClass="#{backingBean.selectedMemberList.contains(aMember) ? 'passive' : 'active'}" style="width: 100%;" id="dTable" var="aMember" value="#{backingBean.memberList}">
支持豆:
private Member anotherMember;
//getter and setter methods
但它也没有工作。有人对这个问题有任何建议吗?
PrimeFaces 2.2.1 版
编辑: css 包含这些字段:
.active{
background-image: none !important;
}
.passive{
background-color:gainsboro !important;
background-image: none !important;
}
编辑和解决方案:
xhtml:
<p:commandButton action="#{backingBean.checkIfMemberInList(aMember)}" id="btn_add" value="Add" update=":mf:op :mf:op_uk" process=":mf:op_uk">
<p:collector value="#{ukt}" addTo="#{backingBean.selectedMemberList}" />
</p:commandButton>
后备豆:
public boolean checkIfMemberInList(Member aMember){
for(int i=0; i<selectedMemberList.size();i++){
if(selectedMemberList.contains(aMember)){
return true;
}
}
return false;
}