マップ要素を JSP から選択した値にバインドしようとしています。select の要素は異なるマップから来ていますが、キーセットは両方のマップで同じです。
Java コードの一部:
private Map<String, List<String>> customCriteriaMap = new HashMap<>();
private Map<String, String> activeCustomCriteria = new HashMap<>();
たとえば、customCriteriaMap には 1 つのエントリがあります。
key: International, value: list contains: true, false
activeCriteriaMap にも 1 つのエントリがあります。
kry: International, value: true
フォームの選択と送信で false を選択した後、activeCriteriaMap にエントリを追加したいと思います。
key: International, value: false
JSP コード:
<div class="grid_6 two">
<c:forEach items="${settingsForm.customCriteria}" var="actualCriteriaValues">
<c:set var="actualCriteriaKey" value="${actualCriteriaValues.key}" />
<c:set var="activeCriteria" value="${settingsForm.activeCustomCriteria[actualCriteriaKey]}"/>
<label>Criteria:</label>
<form:select path="activeCustomCriteria[${actualCriteriaKey}]" >
<c:forEach items="${actualCriteriaValues.value}" var="actualCriteriaValue">
<c:set var="optionLabel" value="${actualCriteriaValue}"/>
<c:choose>
<c:when test="${optionLabel eq 'N'}">
<c:set var="optionLabel" value="False"/>
</c:when>
<c:when test="${optionLabel eq 'Y'}">
<c:set var="optionLabel" value="True"/>
</c:when>
</c:choose>
<form:option value="${actualCriteriaValue}" label="${optionLabel}"/>
</c:forEach>
</form:select>
</c:forEach>
</div>
select と submit で異なる値を選択した後、activeCustomCriteria の値が変更されません。常に同じです - デフォルト値。
前もってありがとう、マレク。