2009-08-22 58 views

回答

1

您可以使用支持「newspaperColumns」和「newspaperOrientation」屬性的t:dataTable component。 newspaperColumns決定表格將被分割的列的數量和newspaperOrientation報紙表格中報紙列的方向。

在您的例子中,bean:

public class Bean { 
    public List<String> getPeople() { 
     List<String> people = new ArrayList<String>(); 
     people.add("Jems"); 
     people.add("tom"); 
     people.add("chirs"); 
     people.add("harry"); 
     return people; 
    } 
} 

和JSF:

<t:dataTable var="person" value="#{bean.people}" rowIndexVar="index" 
      newspaperOrientation="horizontal" newspaperColumns="2"> 
    <h:column> 
     <h:outputText value="#{index + 1}"/> 
    </h:column> 
    <h:column> 
     <h:outputText value="#{person}"/> 
    </h:column> 
</t:dataTable> 

渲染爲:

<table> 
    <tbody id="_id13:tbody_element"> 
    <tr><td>1</td><td>Jems</td><td>2</td><td>tom</td></tr> 
    <tr><td>3</td><td>chirs</td><td>4</td><td>harry</td></tr> 
    </tbody> 
</table> 
5

您可以在模型管理此。

例如,拆分列表轉換對:

public class PairedList<T> extends AbstractList<Pair<T>> { 
    private final List<? extends T> data; 
    private final T defaultVal; 

    public PairedList(List<? extends T> data, T defaultVal) { 
    this.data = data; 
    this.defaultVal = defaultVal; 
    } 

    @Override public int size() { 
    return (data.size()/2) + (data.size() % 2); 
    } 

    @Override public Pair<T> get(int index) { 
    int left = index * 2; 
    int right = left + 1; 
    return new Pair<T>(data.get(left), right >= data.size() ? defaultVal : data 
     .get(right)); 
    } 

    @Override public boolean addAll(Collection<? extends Pair<T>> c) { 
    throw new UnsupportedOperationException(); 
    } 
} 

一對類:

public class Pair<T> { 

    private final T left; 
    private final T right; 

    public Pair(T left, T right) { 
    this.left = left; 
    this.right = right; 
    } 

    public T getRight() { return right; } 
    public T getLeft() { return left; } 
} 

託管bean暴露該列表:

public class TwoPerRowBean implements Serializable { 
    private final List<String> data = Arrays.asList("Jems", "tom", "chirs", 
     "harry", "Barry"); 

    public List<Pair<String>> getPairedData() { 
    return new PairedList<String>(data, "-"); 
    } 
} 

表配置:

<h:dataTable value="#{twoPerRowBean.pairedData}" var="pair"> 
    <h:column> <h:outputText value="#{pair.left}" /> </h:column> 
    <h:column> <h:outputText value="#{pair.right}" /> </h:column> 
</h:dataTable> 
0

你可以傳遞一個List<String[]><h:datatable value="bean.list">

@ViewScoped 
public class NameClass implements Serializable{ 

    private List<String[]> list; 

    public void onPageLoad(){ 
     list = someMethod that returns the list; 
    } 

    //...gettters and setters 
} 

進入.xhtml:

<h:datatable value="nameClass.list" var="l"> 
    <h:column>#{l[0]}</h:column> 
    <h:column>#{l[1]}</h:column> 
</h:datatable> 
相關問題