Hallo,
ich versuche gerade in JSF einzusteigen und eine dynamische DataTable zu entwickeln, aber hänge gerade etwas an dem durchlauf durch die Datenstruktur.
Code meiner Bean
Jedoch gibt er keine Daten aus sondern schafft den zugriff nicht. Es kommt immer zum Fehler "value="#{data['cv_nn']}": The class 'ejbtester.TableBean$RowContent' does not have the property". Dabei ist "cv_nn" aber definitiv ein Key in der Map. Hat jemand einen Tipp wieso das Ausschreiben der Daten so nicht funktioniert?
ich versuche gerade in JSF einzusteigen und eine dynamische DataTable zu entwickeln, aber hänge gerade etwas an dem durchlauf durch die Datenstruktur.
Code meiner Bean
Java:
public class TableBean implements Serializable
{
//DatenModel für Tabellenspalten
private List<String> Lstr_columns = null;
//DatenModel für Tabllenzeilen
private List<RowContent> Lstr_rows = new ArrayList<>();
/**
* Konstruktor holt DefaultTableModel Daten
*/
public TableBean()
{
DefaultTableModelToDataSource user = new DefaultTableModelToDataSource();
this.Lstr_columns = user.getTableCols();
List<Map<String, String>> tmp = user.getTableContent();
for (Map<String, String> tmpMap : tmp)
{
RowContent rc = new RowContent(tmpMap);
this.Lstr_rows.add(rc);
}
}
/**
* getter für Zeilen
*
* @return
*/
public List<RowContent> getLstr_rows()
{
return this.Lstr_rows;
}
/**
* getter für Spalten
*
* @return
*/
public List<String> getLstr_columns()
{
return Lstr_columns;
}
public static class RowContent implements Serializable
{
private Map<String, String> rowContent = new HashMap<>();
public Map<String, String> getRowContent()
{
return rowContent;
}
public RowContent(Map<String, String> cont)
{
this.rowContent = cont;
}
}
}
HTML:
<h:form id="form">
<p:growl id="msgs" showDetail="true" />
<p:dataTable id="userTab" var="data" value="#{tableBean.lstr_rows}" rowIndexVar="rowIndex" editable="true" scrollRows="20" scrollable="true" liveScroll="true" scrollHeight="150" style="width: auto; height: auto;">
<f:facet name="header">
Nutzer
<p:commandButton id="toggler" type="button" value="Columns" style="float:right; height: 20px;font-size: 70%" icon="ui-icom-calculator" />
<p:columnToggler datasource="userTab" trigger="toggler" />
</f:facet>
<p:columns value="#{tableBean.lstr_columns}" var="col" columnIndexVar="colIndex" headerText="#{col}">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{data[col]}" /></f:facet>
<f:facet name="input"><p:inputText value="#{data[col]}" style="width:96%" label="#{col}"/></f:facet>
</p:cellEditor>
</p:columns>
<p:column style="width:32px" headerText="Editieren">
<p:rowEditor />
</p:column>
</p:dataTable>
</h:form>
Jedoch gibt er keine Daten aus sondern schafft den zugriff nicht. Es kommt immer zum Fehler "value="#{data['cv_nn']}": The class 'ejbtester.TableBean$RowContent' does not have the property". Dabei ist "cv_nn" aber definitiv ein Key in der Map. Hat jemand einen Tipp wieso das Ausschreiben der Daten so nicht funktioniert?