0

我想更改数据表中数据的颜色。

例如: a 有两个值... 64 和 64 。

一个:64

  64

b 有两个值 60 和 65

乙: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 "安装的路径"} && some.path+1 eq "使用的路径)} 然后 {if(#(some.path.substringAfter(':') eq (#(some.path+1. substringAfter(':')

...如何使用 jsf 给出这个?

4

1 回答 1

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

在哪里MyObjectMyObjectWrapper 看起来像这样

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;
}
于 2013-08-28T08:14:24.767 回答