Н: DataTable мы можем отобразить данные следующим образомМожно ли иметь несколько строк с JSF ч: DataTable
- Jems
- TOM
- Chirs
- гарри
но я могу отобразить то же, что показано ниже:
- Jems 2. индюки
- Крисом 4. Харри
Ragards, Аби
Н: DataTable мы можем отобразить данные следующим образомМожно ли иметь несколько строк с JSF ч: DataTable
но я могу отобразить то же, что показано ниже:
Ragards, Аби
Вы можете использовать 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>
Вы можете управлять этим в модели.
Например, разделить список на пары:
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>
Вы можете передать 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>