Hallo zusammen,
im Rahmen meiner Master-Thesis verwende ich JSF als Technologie und bin heute auf ein Problem gestoßen, das ich nicht alleine gelöst bekomme. Suche nun seit Ewigkeiten im Netz, aber kein Ansatz ähnelt meinem.
Das Problem ist das folgende:
Ich möchte auf Basis eines dynamischen Datenbestandes Komponenten programmatisch erzeugen und anschließend auslesen. Soll heißen:
Ich habe auf Seiten der JSP ein PanelGrid und ein binding, so dass ich auf Managed-Bean-Ebene darauf zugreifen kann. Der Inhalt des PanelGrids wird nun mit Ausgaben und Eingabefelder zeilenweise gefüllt, alles auf Seite der Managed-Bean:
Das ganze sieht dann etwa so aus:
In Abhängigkeit der Anzahl der Elemente in der Collection werden die UI-Komponenten erzeugt und auch korrekt im Browser gerendert. Bis hierhin funktioniert alles wunderbar.
Wie zu sehen, wird je Zeile ein HtmlSelectOneMenu erzeugt. Wie komme ich nach dem Request an die vom Benutzer ausgewählten Werte in der Drop-Down-Liste ran?
Ich habe schon versucht, die HtmlSelectOneMenu(s) in einer Liste auf Session-Ebene zu speichern, aber das funkltioniert irgendwie nicht.
Danke im Voraus.
PS: eilt etwas => Abgabetermin naht.
im Rahmen meiner Master-Thesis verwende ich JSF als Technologie und bin heute auf ein Problem gestoßen, das ich nicht alleine gelöst bekomme. Suche nun seit Ewigkeiten im Netz, aber kein Ansatz ähnelt meinem.
Das Problem ist das folgende:
Ich möchte auf Basis eines dynamischen Datenbestandes Komponenten programmatisch erzeugen und anschließend auslesen. Soll heißen:
Ich habe auf Seiten der JSP ein PanelGrid und ein binding, so dass ich auf Managed-Bean-Ebene darauf zugreifen kann. Der Inhalt des PanelGrids wird nun mit Ausgaben und Eingabefelder zeilenweise gefüllt, alles auf Seite der Managed-Bean:
Das ganze sieht dann etwa so aus:
Java:
Application app = FacesContext.getCurrentInstance().getApplication();
for(JobTraining jobTraining : general) {
HtmlOutputText number = (HtmlOutputText) app.createComponent(HtmlOutputText.COMPONENT_TYPE);
number.setValue(i++);
trainingGrid.getChildren().add(number); // trainingGrid ist das PanelGrid, auf das ich durch das Binding Zugriff habe
HtmlOutputText costs = (HtmlOutputText) app.createComponent(HtmlOutputText.COMPONENT_TYPE);
costs.setValue(jobTraining.getCosts().getSalaryValue());
trainingGrid.getChildren().add(costs);
HtmlOutputText duration = (HtmlOutputText) app.createComponent(HtmlOutputText.COMPONENT_TYPE);
duration.setValue(jobTraining.getDuration());
trainingGrid.getChildren().add(duration);
/*
* Select One Menu
*/
UISelectOne quantity = (HtmlSelectOneMenu) app.createComponent(HtmlSelectOneMenu.COMPONENT_TYPE);
quantity.setConverter(new IntegerConverter());
List<SelectItem> items = new ArrayList<SelectItem>();
for (int j = 0; j < qantityAdministrationLeaders; j++) {
items.add(new SelectItem(j, Integer.toString(j)));
}
UISelectItems selectItems = (UISelectItems) app.createComponent(UISelectItems.COMPONENT_TYPE);
selectItems.setValue(items);
quantity.getChildren().add(selectItems);
trainingGrid.getChildren().add(quantity);
selectOnes.add(quantity);
}
In Abhängigkeit der Anzahl der Elemente in der Collection werden die UI-Komponenten erzeugt und auch korrekt im Browser gerendert. Bis hierhin funktioniert alles wunderbar.
Wie zu sehen, wird je Zeile ein HtmlSelectOneMenu erzeugt. Wie komme ich nach dem Request an die vom Benutzer ausgewählten Werte in der Drop-Down-Liste ran?
Ich habe schon versucht, die HtmlSelectOneMenu(s) in einer Liste auf Session-Ebene zu speichern, aber das funkltioniert irgendwie nicht.
Danke im Voraus.
PS: eilt etwas => Abgabetermin naht.

Zuletzt bearbeitet: