1

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

第 1 行:选择“下拉菜单”

第2行:选择“下拉菜单”

第3行:选择“dropdown1”“dropdown2”

在哪里:

下拉值是 {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>

该代码适用于 Row1 和 Row2,它们只有 1 个下拉列表可以绑定。但在第 3 行的情况下, 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 回答