2009-08-22 2 views

ответ

1

Вы можете использовать t:dataTable component, которые поддерживают атрибуты «newspaperColumns» и «newspaperOrientation». Газета «Колонны» определяет количество столбцов, по которым таблица будет разделена, а газета «Ориентация» - ориентация газетных колонн в газетном столе.

В вашем примере, боб:

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

управляемый компонент, который предоставляет список:

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> 
Смежные вопросы