p:dataTable输出的更改顺序

时间:2016-12-09 21:31:15

标签: jsf primefaces

我需要有关如何在primefaces中创建数据表的帮助,这将以这种形式从数据库输出数据:

第1列||第二栏

图片||文本

文字||图片

图片||文本

文字||图片

图片||文本

文字||图片

....

问题在于我不知道如何在每第二排改变这些元素的位置

1 个答案:

答案 0 :(得分:0)

嗨,这是我建议处理这个问题的解决方案

第1步:创建一个可以处理信息的对象

这个对象将由三个信息组成:

1- info1:String

2- info2:String

3- info3:Boolean

我们使用String因为我们必须处理的信息必须是String您可以将其用作text并将其用作url图片。

第2步:合并两个列表

如果两个列表的大小相同,则只能合并这两个列表

   Boolean verifie = Boolean.TRUE ; 
   int size = listofText.size(); // they have the same size it means you can use the listofImageUrl
   List<object> listofCombineObject = new Arraylist<>();
   for( int i = 0 , i < size , i++ ){
    if(verifie){
    Object o = new Object();
    o.setinfo1(listofText.get(i));
    o.setinfo2(listofImageUrl.get(i));
    o.setinfo3(verifie);
    verifie = Boolean.FALSE ;        
    }else{
    Object o = new Object();
    o.setinfo1(listofText.get(i));
    o.setinfo2(listofImageUrl.get(i));
    o.setinfo3(verifie);  
    verifie = Boolean.TRUE;         
    }
    }

第3步:在dataTable中使用rendred显示您的列表

    <p:dataTable value="#{ManagedBean.listofCombineObject }" var="object" ...>
    <p:column >
    <h:outputText value="#{object.info1}" rendred="#{object.info3}"/>
    <p:graphicImage id="image" name="#{object.info2}"  rendred="#{!object.info3}"  >
    </p:graphicImage>

    </p:column>
    <p:column >
    <h:outputText value="#{object.info1}" rendred="#{!object.info3}"/>
    <p:graphicImage id="image" name="#{object.info2}"  rendred="#{object.info3}"  >
    </p:graphicImage>
    </p:column> // 

希望能帮到你