gpt4 book ai didi

java - PF 或 var 中数据表的条件着色与数据表中的绑定(bind)标签

转载 作者:行者123 更新时间:2023-12-01 15:26:32 25 4
gpt4 key购买 nike

我有一个数据表和一个收集器。数据表中的每一行都有一个按钮,该按钮将相应的行添加到收集器中。我想向该数据表添加条件着色。条件是所选行是否在收集器中。

<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>

支持 bean:

List<Member> selectedMemberList;
List<Member> memberList;

//getter and setter methods

上面的代码做了被动样式类,但没有添加主动样式。我想这可能是因为我无法将 var (这是请求范围的)传递给支持 bean。所以我尝试将该值绑定(bind)到支持 bean 值:

<p:dataTable binding="#{backingBean.anotherMember}" rowStyleClass="#{backingBean.selectedMemberList.contains(aMember) ? 'passive' : 'active'}" style="width: 100%;" id="dTable" var="aMember" value="#{backingBean.memberList}">

支持Bean:

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>

支持 bean:

public boolean checkIfMemberInList(Member aMember){       
for(int i=0; i<selectedMemberList.size();i++){
if(selectedMemberList.contains(aMember)){
return true;
}
}
return false;
}

最佳答案

backingBean.selectedMemberList.contains(aMember)会不会一直返回 false?

如果是这样,

使用 backingBean.selectedMemberList.contains(aMember) 进行“播放”,首先尝试像 backingBean.checkIfMemberInList(aMember) 这样的方法,

boolean checkIfMemberInList(Member iMember){ 
//iterate over the list and check if object exists , if so return true , otherwise false
}

可能对象不同... 相同的 id 并不意味着它们的哈希码相同...

您可能会考虑覆盖成员类的 int hashCode 或 boolean equals

编辑

我对 checkIfMemberInList 的建议只是使其工作的第一个版本,我真的认为您应该重写 Member 类的 equals ,这样您就可以使用 selectedMemberList.contains(memberObj)

Implementing hashCode() and equals()

关于java - PF 或 var 中数据表的条件着色与数据表中的绑定(bind)标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10070604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com