SelectOneMenu liest Daten nicht ein

Pahlkenberg

Mitglied
Ich habe ein SelectOneMenu, welches mir "Kunden" anzeigt, von denen dann der angewählte an eine Bean übergeben werden soll. Die Kunden werden korrekt nach meiner Vorgabe als SelectItems angezeigt mit Vor- und Nachname und als value dieser SelectItems ist jeweils auch korrekterweise ein Objekt der Klasse Customer enthalten, wie ich durch Debugging gesehen habe. Aber die Auswahl wird einfach nicht auf die Bean geschrieben.

Auf der jsf-Seite sieht es so aus:

Java:
 <h:selectOneMenu id="pickCustomer" size="3" value="#{kontoListBean.customer}">
     <f:selectItems value="#{personListBean.customerItems}" />
 </h:selectOneMenu>

In der PersonListBean sieht es so aus:

Java:
public List<SelectItem> getCustomerItems() {
    List<SelectItem> customerItems = new ArrayList<SelectItem>();
    if (getPersonList() == null) {
      return customerItems;
    }
    for (Person listPerson : getPersonList()) {
      if (listPerson instanceof Customer) {
        customerItems.add(new SelectItem(listPerson, listPerson.getForename() + " " + listPerson.getSurname()));
      }
    }

    return customerItems;
  }


Wie gesagt funktioniert alles korrekt bis zu dem Moment, wo nach der Auswahl die Methode "setCustomer(...)" der KontoListBean aufgerufen wird. Da wird als Parameter dann "null" übergeben, statt dem ausgewählten Kunden. Was mache ich falsch?

Danke schonmal für die Hilfe!
 

Pahlkenberg

Mitglied
Standardsetter:

Java:
 public void setCustomer(final Customer customer) {
    this.customer = customer;
  }
[/Java]


Der Button navigiert nur ins nächste Menü, welches darauf angewiesen ist, dass der Customer bereits in die Bean geschrieben wurde

[code=Java]
 <h:commandButton id="accountForExistingCustomer" value="Konto erstellen" action="goNewKonto" />
 

Pahlkenberg

Mitglied
Ja. Form ist auch drum herum. Könnte es vielleicht daran liegen, dass er ein Customer-Objekt erwartet aber stattdessen ein SelectItem bekommt und man den Value noch manuell in einer Methode rausziehen muss?
 

Pahlkenberg

Mitglied
Ok hab eine "Lösung" gefunden, die aber mehr schlecht als recht ist. Hab auf einem anderen Forum von einem Typen gelesen, der das gleiche Problem hatte, dass die set-Methode des OneList-Menüs einfach nichts durchgibt-außer man übergibt in dem SelectItem nicht (Objekt,String) sondern (String,String) und fängt dann eben in der Bean auch das Ergebnis auf einer String-Variablen auf. Dazu müsse man dann nur noch in der Bean definieren, wie man zu einem eindeutigen String wieder das passende Objekt aufruft.

Siehe da, das hat sofort geklappt bei mir, aber das ist doch voll sch***, dass man kein Objekt aus dem SelectItem übergeben kann. Ich dachte intuitiv, das wäre der eigentliche Sinn.

Falls jemand da noch einen echten Bugfix am Start hat, wäre ich dankbar. Aber wenigstens funktioniert es
 

JimPanse

Bekanntes Mitglied
Hi,

es ist aus Perfomance Gründen immer besser die SelectItems mit id + Bezeichner zu befühlen ABER
wenn du unbedingt Objekte verwenden willst dann brauchst du einen Converter:

The BalusC Code: Objects in h:selectOneMenu

Vergesse aber nicht in deinem Objekt die equals()-Methode zu überschreiben die wird intern aufgerufen.

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
C selectOneMenu mit valueChangeListener im <p:dialog Web Tier 2
F JSF h:selectOneMenu Wert vorbelegen klappt nicht? Web Tier 2
M Converter für SelectOneMenu Web Tier 3
Phash JSF - SelectOneMenu Property anzeigen Web Tier 3
F JSF p:selectOneMenu Session Web Tier 10
S JSF SelectOneMenu - Probleme mit AJAX Web Tier 6
F PrimeFaces - selectOneMenu Web Tier 2
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
H JSF Textarea nur einblenden, bei bestimmter Auswahl in SelectOneMenu Web Tier 6
H JSF SelectOneMenu und der Converter Web Tier 3
F JSF ValueChangeListener in editable p:SelectOneMenu Web Tier 3
NoXiD JSF h:selectOneMenu - änderungen nicht übernommen Web Tier 14
J JSF 2.0 h:selectOneMenu mit enums Web Tier 4
J h:selectOneMenu und Page-Refresh Web Tier 3
M selectOneMenu Web Tier 4
I selectOneMenu - Problem Web Tier 6
M SelectoneMenu Default Wert Web Tier 4
ModellbahnerTT JSF selectOneMenu Web Tier 15
J Datenübergabe aus selectOneMenu Web Tier 2
F Unterschied h:selectOneMenu zu rich:comboBox Web Tier 4
E Wert aus JSF-Selectonemenu in Textfeld schreiben Web Tier 4
A JSF SelectOneMenu mit Werten aus Bean vorbelegen Web Tier 2
M SelectOneMenu mit Inhalt aus DB Web Tier 2
I Daten einer Datenbank in ein Formular einfügen Web Tier 3
S Daten von Client empfangen Web Tier 1
J Servlet Einschätzung anderer zu Daten-Repositories Web Tier 3
N JSF CommandButton Daten aus anderem Form auslesen Web Tier 3
C JSF JSF Daten aus Klasse werden nicht angezeigt Web Tier 4
X SQL Datenbank-Daten in ApplicationScoped ManageBean zwischenspeichern? Web Tier 4
P JSF Primefaces Picklist-Ersatz mit vielen Daten Web Tier 4
F Wo und wie Daten die für alle Benutzer bestimmt sind verwalten Web Tier 4
H JSF Daten aus ManagedBean können vom Controller gelesen werden Web Tier 6
X JSP Auslesen der Daten einer Session Web Tier 3
R Daten Streamen mit Servlets. Web Tier 4
I JSF Daten aus Formular werden nicht übernommen Web Tier 6
T Post Daten Abfangen Web Tier 59
1 JSP Mit Daten einer c:forEach Rechnen ? Web Tier 4
T Daten - DB-Abfrage - Tabelle Web Tier 5
H Daten von Webseiten bekommen Web Tier 6
T Einfach nur Daten im JSP ausgeben Web Tier 2
S Daten zwischen 2 Servlets aus 2 Webapplikationen teilen? Web Tier 17
R Wo Daten manipulieren? Client oder Server? Web Tier 3
N Tabelle dynamisch mit Daten aus Datenbank füllen Web Tier 3
sliwalker forEach und Scriptlet: Daten aus Scriptlet in jstl sehen Web Tier 2
S [SelectItems value(herkunft bean)] in [UI:repeat] lädt daten nicht neu nach Web Tier 3
P Formular-Daten-Überprüfung - Eingaben im Fehlerfall behalten Web Tier 2
T Daten aus der Form holen Web Tier 2
U JSP form-Daten (ohne name-Attribut) an Servlet = Problem Web Tier 6
G Daten von ablaufenden Sessions speichern? Web Tier 3

Ähnliche Java Themen

Neue Themen


Oben