Буду признателен, если вы мне поможете, так что заранее спасибо. Я использую ПраймФейс. У меня есть динамическая таблица базы данных. У меня нет проблем с созданием этой таблицы, но я хочу просмотреть эту таблицу, используя данные и столбцы.
Вот часть, где я добавляю содержимое таблицы базы данных в ArrayList
:
elts = new ArrayList<String>();
try {
Statement stmt = conn.createStatement();
ResultSet RS = stmt.executeQuery("SELECT * FROM temporaire");
ResultSetMetaData metadata = RS.getMetaData();
nombreColonnes = metadata.getColumnCount();
for (int j = 1; j <= nombreColonnes; j++) {
cols.add("colonne" + j);
}
while (RS.next()) {
for (int i = 1; i <= nombreColonnes; i++) {
elts.add(RS.getArray(i).toString());
}
}
и код xhtml datatable:
<p:dataTable value="#{templateBean.elts}" var="elts" rowIndexVar="indro" rows="10"
paginator="true"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
columnsPerPageTemplate="5,10,15">
<p:columns value="#{templateBean.cols}" var="cols" columnIndexVar="index">
<f:facet name="header">
<h:outputText value="#{cols}"/>
</f:facet>
<h:outputText value="#{elts}"/>
</p:columns>
</p:dataTable>
и проблема в том, что данные, которые я получаю, повторяют один и тот же элемент в каждой строке следующим образом:
col1Content | col1Content |col1Content | col1Content
col2Content |col2Content |col2Content |col2Content
...
Не могли бы вы помочь мне, где проблема и что не так с моим кодом? Спасибо
#{templateBean.cols}
будет оцениваться как одно и то же значение на каждой итерации<p:dataTable>
. Вам нужно получить другое значение (объект) из управляемого компонента на основе строки<p:dataTable>
, которая в данный момент повторяется. Вы можете рассмотретьjava.util.Map
для этой цели, в котором вы можете передать значение ключа на основе элемента таблицы данных, который в настоящее время повторяется, чтобы получить элемент, связанный с этим ключом, на каждой итерации<p:dataTable>
. - person Tiny   schedule 18.04.2015<f:facet name="header">
в этом случае, чтобы поместить заголовок в каждый динамически генерируемый столбец. Вместо этого есть свойствоheaderText
, связанное с<p:columns>
, например<p:columns headerText="#{cols}" .../>
. Также удалитеcolumnIndexVar
, если он не нужен. - person Tiny   schedule 18.04.2015columnsPerPageTemplate
, связанного с<p:dataTable>
. Вместо этогоrowsPerPageTemplate
. См. также соответствующий вопрос. - person Tiny   schedule 18.04.2015