0

マップ要素を 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 の値が変更されません。常に同じです - デフォルト値。

前もってありがとう、マレク。

4

1 に答える 1

0

Ok、

この平和なコードは問題なく機能します。問題はインターセプターの 1 つにありました。それでも、このコードは、あるマップを使用して選択を埋め、他のマップをバインドする方法の例として評価される可能性があります:)

于 2012-10-11T08:07:34.673 に答える