Hallo zusammen
Ich schreibe eine Website mit Java (JSF) und verwende auf einer Seite selectOneMenu und dataTable. Beide werden mit einem ArrayList gefüllt. Ziel ist: Wenn die selectOneMenu geändert wird, soll der Inhalt der dataTable anhand von <f:ajax dementsprechende angepasst werden, ohne dass die Seite aktualisiert wird. Das Problem ist, wenn die selectOneMenu geändert wird, wird die dataTable nicht angepasst.
Wenn ich die selectOneMenu manuell fülle, funktioniert mein Ajax (Beispiel: Iniden, Türkei, Italien), allerdings wenn ich die selectOneMenu mit einem ArrayList fülle, wird dataTable nur geleert.
Ich stell hier noch mein XHTML und Java Beans Code zur Verfügung und wäre:
[xhtml]
<h:form>
<h:selectOneMenu id="tt" value="#{groupList.groupId}" >
<f:selectItems value="#{votes.proGroupList}" var="list" itemLabel="#{list.groupName}" itemValue="#{list.groupId}" />
<f:selectItem itemLabel="Indien" itemValue="Indien" />
<f:selectItem itemLabel="Türkei" itemValue="Türkei" />
<f:selectItem itemLabel=" Italien" itemValue="Italien" />
<f:ajax event="change" execute="tt" render="tableElectList" listener="#{votes.proElect}" />
</h:selectOneMenu>
<h:dataTable id="tableElectList" value="#{votes.proElectList}" var="electList">
<h:column>
<h
utputText value="#{electList.lastName}"/>
</h:column>
</h:dataTable>
</div>
</h:form>
[/xhtml]
Ich schreibe eine Website mit Java (JSF) und verwende auf einer Seite selectOneMenu und dataTable. Beide werden mit einem ArrayList gefüllt. Ziel ist: Wenn die selectOneMenu geändert wird, soll der Inhalt der dataTable anhand von <f:ajax dementsprechende angepasst werden, ohne dass die Seite aktualisiert wird. Das Problem ist, wenn die selectOneMenu geändert wird, wird die dataTable nicht angepasst.
Wenn ich die selectOneMenu manuell fülle, funktioniert mein Ajax (Beispiel: Iniden, Türkei, Italien), allerdings wenn ich die selectOneMenu mit einem ArrayList fülle, wird dataTable nur geleert.
Ich stell hier noch mein XHTML und Java Beans Code zur Verfügung und wäre:
[xhtml]
<h:form>
<h:selectOneMenu id="tt" value="#{groupList.groupId}" >
<f:selectItems value="#{votes.proGroupList}" var="list" itemLabel="#{list.groupName}" itemValue="#{list.groupId}" />
<f:selectItem itemLabel="Indien" itemValue="Indien" />
<f:selectItem itemLabel="Türkei" itemValue="Türkei" />
<f:selectItem itemLabel=" Italien" itemValue="Italien" />
<f:ajax event="change" execute="tt" render="tableElectList" listener="#{votes.proElect}" />
</h:selectOneMenu>
<h:dataTable id="tableElectList" value="#{votes.proElectList}" var="electList">
<h:column>
<h
</h:column>
</h:dataTable>
</div>
</h:form>
[/xhtml]
Java:
public void proElect(ValueChangeEvent e) {
groupList g = new groupList();
g.setGroupId("3");
g.setGroupName("3");
proElectList = new ArrayList<>();
// Hier wäre der Code, um Daten aus der Datenbak zu hollen
//....
//...
while (results.next()) {
elect=new Elects();
elect.setFirstName(results.getString(3));
elect.setLastName(results.getString(4));
elect.setIdElect(results.getInt(1));
proElectList.add(elect);
}
}
Zuletzt bearbeitet: