ich Frühling bin mit 3.0.5 und Tomcat 7Federformen + JSP: Binden Sie den Wert eines <select> auf einer Karte <String, String> - was mache ich falsch
Was ich tue:
Ich habe eine Tabelle von ausgewählten Elementen in JSP erstellt. Jede Select ist mit einem id in meinem Modell verbunden sind, wie folgt aus:
<form:form commandName="someStuff" method="post" id="peopleForm" onSubmit="return validate('${someStuff}');">
<%-- A bunch of other unrelated stuff here --%>
<table>
<th>some other info</th>
<th>please select a name</th>
<c:forEach var="thisThing" items="${allOfTheThings}">
<tr>
<td>some other info here</td>
<td>
<form:select id="name_for_thing_${thisThing.SomeId}" path = "tempNames['${thisThing.SomeId}']" thisThingsId="${thisThing.SomeId}" class="thing_name_selector_class">
<option value="Please Select One">Please Select One</option>
<option value="John">John</option>
<option value="Joe">Joe</option>
<option value="Stephen">Stephen</option>
<option value="Mary">Mary</option>
</form:select >
</td>
</tr>
</c:forEach>
</form:form>
und dann in meiner Domain-Objekt 'someStuff'
definiere ich eine Karte wie:
private Map<String, String> tempNames;
public Map<String, String> getTempNames() {
return tempNames;
}
public void setTempNames(Map<String, String> tempNames) {
this.tempNames = tempNames;
}
Das Problem:
Wenn ich Werte aus dem Dropdown-Menü auswähle und dieses Formular absende, kann ich einen Haltepunkt im Controller setzen und sehen, dass 'tempNames' alle korrekten Werte enthält, die ich verarbeiten und speichern kann - Das ist genau das, was ich erwarten würde - also funktioniert das Binden in einer Richtung ...
Wenn jedoch 'someStuff' bereits Werte enthält, sind diese Werte nicht an die Dropdowns gebunden.
Ich habe versucht
einen 'Wert' Hinzufügen Attribut auf das Element selbst mag:
<form:select id="name_for_thing_${thisThing.SomeId}" path = "tempNames['${thisThing.SomeId}']" value="tempNames['${thisThing.SomeId}']" thisThingsId="${thisThing.SomeId}" class="thing_name_selector_class">
und auch wie folgt aus:
<form:select id="name_for_thing_${thisThing.SomeId}" path = "tempNames['${thisThing.SomeId}']" value="${tempNames[thisThing.SomeId]}" thisThingsId="${thisThing.SomeId}" class="thing_name_selector_class">
aber das zweite nicht scheinen sogar in der resultierenden HTML ....