JSF Zwei Listen/Vectoren für f:selectItems verknüpfen - möglich?

Txxxxs

Mitglied
Hallo,

ich habe in einer Managed-Bean zwei Vectoren:
Java:
private Vector<Ort> alleOrte;
private Vector<Adresse> adressen;
Ein Ort-Objekt enthält eine Ortnr, PLZ und Ortname, ein Adresse-Objekt eine Adressnr, Strasse und Ortnr, über die auf einen Ort verwiesen wird. Nun möchte ich eine h:selectOneListbox mit allen Adressen füllen, wobei statt Ortnr eben PLZ und Ortname stehen sollte. Wie kann man das am besten realisieren? Ist das mit der Unified Expression Language machbar?

Hier mein aktueller, noch nicht funktionierender Stand:
Java:
			<h:selectOneListbox id="adressen"
				rendered="#{!empty kdAdressen.adressen}"
				required="true" requiredMessage="Bitte eine Adresse auswählen!"
				value="#{kdAdressen.adrnr}" label="Adressen">
				<f:selectItems value="#{kdAdressen.adressen}" var="adr"
					itemLabel="#{adr.plz}, #{adr.ortname}, #{adr.strasse}"
					itemValue="#{adr.adressnr}" />
			</h:selectOneListbox>
 
Zuletzt bearbeitet:
S

Sym

Gast
Du konntest den Zugriff einfach über eine andere Methode kapseln:
Java:
public List<SelectItem> getPlaces() {
...
}

Und dort befüllst Du die SelectItems und deren Labels von Hand je nach Objekt-Typ.
 

Txxxxs

Mitglied
Danke - mit einer Collection (von SelectItem-Instanzen) habe ich gestern schon herumprobiert, gerade eben noch einmal und bin tatsächlich zu einer Lösung gekommen:
Java:
	public Vector<SelectItem> getAdressliste() {
		adressliste = new Vector<SelectItem>();

		for (Adresse a : adressen) {
			for (Ort o : alleOrte) {
				if (a.getOrtnr() == o.getOrtnr()) {
					adressliste.add(new SelectItem(a.getAdressnr(), o.getPlz()
							+ " " + o.getOrt() + ", " + a.getStrasse()));
					break;
				}
			}
		}
		return adressliste;
	}
:)
 

Ähnliche Java Themen

Neue Themen


Oben