我想更改数据表中的数据颜色。
例如: a有两个值... 64和64。
a:64
64
b有两个值60和65
b:60
65
<p:dataTable var="someclass" value="#{someBean.someclass}">
<p:column headerText="DEVICE" >
<h:outputText value="#{someclass.somemember}" />
</p:column>
<p:column headerText="PATH">
<h:outputText value="#{someclass.somemember}" />
</p:column>
</p:dataTable>
如果'a'有两个相等的值,那么它应该以一种颜色显示,否则如果值不同,我需要不同颜色的数据。
如何使用primefaces数据表?
有没有其他方法可以使用primefaces(没有数据表)来实现这个目的?
他是我希望我的表达方式如何.......
if {#some.path eq“paths installed”}&amp;&amp; some.path + 1 eq“使用的路径”} 然后 {if(#(some.path.substringAfter(':')eq(#(some.path + 1.substringAfter(':')
...如何使用jsf进行此操作?
答案 0 :(得分:0)
这是你需要的最多,至少你可以得到一般的想法...
你的xhtml应该是这样的:
<p:dataTable var="myLittleWrapper" value="#{myBean.modified}">
<p:column headerText="PATH">
<h:outputText value="#{myLittleWrapper.myObject.path}" styleClass="#{(myLittleWrapper.colorMe)?'equalMembers':''}"/>
</p:column>
...
创建以下方法(从您@PostConstruct
调用)
List<MyObject> original = new ArrayList<MyObject>();//fill it with data
List<MyObjectWrapper> modified = new ArrayList<MyObjectWrapper>();// + getter/setter
public void prepareModifiedList() {
ListIterator<MyObject> myListIter = original.listIterator();
while (myListIter.hasNext()) {
MyObject myObj = myListIter.next();
MyObject nextMyObj = null;
boolean colorMe = false;
try {
nextMyObj = peek(myListIter);
} catch (NoSuchElementException e) {
}
if (nextMyObj != null && myObj.getPath().equals(nextMyObj.getPath())) {
colorMe = true;
}
MyObjectWrapper myObjectWrapper = new MyObjectWrapper(myObj, colorMe);
modified.add(myObjectWrapper);
}
}
peek
方法如下所示:
public <T> T peek(ListIterator<T> iter) throws NoSuchElementException {
T obj = iter.next();
iter.previous();
return obj;
}
MyObject
和MyObjectWrapper
看起来像这样
public class MyObject {
public MyObject(String path) {
super();
this.path = path;
}
private String path;
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
和
public class MyObjectWrapper {
MyObject myObject;
boolean colorMe;
public MyObjectWrapper(MyObject myObject, boolean colorMe) {
super();
this.myObject = myObject;
this.colorMe = colorMe;
}
public MyObject getMyObject() {
return myObject;
}
public void setMyObject(MyObject myObject) {
this.myObject = myObject;
}
public boolean isColorMe() {
return colorMe;
}
public void setColorMe(boolean colorMe) {
this.colorMe = colorMe;
}
}
如果我理解你,你可以这样做:
<h:outputText value="#{someclass.somemember}"
styleClass="#{(someclass.someMember eq someclass.someOtherMember)?'equalMembers':''}"/>
在你的css中添加
.equalMembers {
color:red;
}