${products}
enthält eine List<Product>
. Product
ist ein @Entity
, hat eine equals
Methode, die durch id
vergleicht. Es gibt keinen Konverter oder Formatierer registriert für Product
(außer Spring Data des DomainClassConverter
aber das scheint nicht für diesen Fall zu treten in):Spring Form Option nicht Element auswählen, Optionen
Dies funktioniert:
<form:select path="productFrom">
<form:option value="" label="-" />
<form:options items="${products}" itemValue="id" itemLabel="name"/>
</form:select>
Diese (benötigt für optgroup-ing , aber hier vereinfacht) nicht den richtigen Wert aus:
<form:select path="productFrom">
<form:option value="" label="-" />
<c:forEach items="${products}" var="product">
<form:option value="${product.id}">${product.name}</form:option>
</c:forEach>
</form:select>
nach SelectedValueComparator
Debuggen ich fand, dass es eine candidateValue
vom Typ Long
zu einemzu vergleichen versuchtvon String
. Ich könnte dies umgehen, indem Sie eine toString()
Methode in Produkt erstellen, die die id
als String
zurückgibt. (Oder ich könnte die equals()
Methode geändert haben, um zu behandeln.)
Noch habe ich ein schlechtes Gefühl, dass ich hier etwas falsch mache.
Wieder mit mir selbst zu sprechen, leider akzeptieren meine eigene Antwort dann ... Seufzer – Arthur