1

ユーザーが次のようなドロップダウンから値を選択できるjspページを設計しています。

Row1: 「ドロップダウン」を選択

Row2: 「ドロップダウン」を選択

Row3: 「dropdown1」「dropdown2」を選択

どこ:

ドロップダウン値は {1,2,3,4,5,6,7} です

ユーザーは上記の行から値を選択し、フォームを保存できます。次にユーザーがページを表示し、保存された値がデータベースから取得されたときに、それらをドロップダウンに表示したいと考えています。そのために、Spring MVC form:select automatic binding を使用しています

<form:select id="${id}" path="Mappings[${index}].userSetting">
            <c:forEach var="item" items="${dropdownValues}">
                <form:option value="${item.value}"><spring:eval expression="item" /></form:option>
            </c:forEach>
</form:select>

このコードは、バインド先のドロップダウンが 1 つしかない Row1 と Row2 に対して正常に機能します。しかし、Row3 の場合、Mappings[${index}].userSetting は、"2,3" のような値 (単一の値ではなく) を返します。これは、dropdownValues リストからのものですが、コンマで区切られています。この場合、明らかな理由により、Spring MVC form:select はドロップダウンからの値の選択に失敗します。ドロップダウンのいずれにも「2,3」が見つからないためです。私がやろうとしているのは、値を分割して、「2,3」から値「2」と「3」が選択され、Row3 が次のようになるようにすることです。

変更前:「dropdown1」「dropdown2」を選択 変更後:「2」「3」を選択

これを達成する方法について誰か提案がありますか?

4

1 に答える 1

2

fn:split()関数について考えたことはありますか 。

ここにあなたができることの例があります:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

<c:set var="row3Value" value="${fn:split(model.getMappings()[${index}].userSetting, ',')}" />

<form:select id="${id}" path="Mappings[${index}].userSetting">
    <c:forEach var="item" items="${dropdownValues}">
        <c:choose>
            <c:when test="${row3Value[0] eq ${item.value}}">
                <form:option selected="true" value="${item.value}"><spring:eval expression="item" /></form:option>
            </c:when>

            <c:otherwise>
                <form:option value="${item.value}"><spring:eval expression="item" /></form:option>
            </c:otherwise
        </c:choose> 
    </c:forEach>
</form:select>
于 2013-01-14T17:01:57.693 に答える