使用SpringMVC形式:选择以将逗号分隔的值绑定到多个下拉列表


问题内容

我正在设计一个jsp页面,用户可以在其中从下拉列表中选择值,例如:

第1行:选择“下拉列表”

第2行:选择“下拉列表”

第3行:选择“下拉列表1”,“下拉列表2”

哪里:

下拉值为{1,2,3,4,5,6,7}

用户可以从以上各行中选择值,然后保存表格。下次用户查看页面并从数据库中检索保存的值时,我想在下拉列表中显示它们。为此,我使用Spring
MVC形式:选择自动绑定

<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看起来像:

之前:选择“下拉列表1”“下拉列表2”之后:选择“ 2”“ 3”

有人对如何做到这一点有建议吗?


问题答案:

您是否考虑过
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>