-1

我想在 JSP 页面上显示多个下拉列表。我正在使用 Struts 并在我的 JSP 页面中获取以下数据对象。

<%
Map<String, CustomObject> data = (Map<String, CustomObject>)renderRequest.getAttribute("data");%>

第一个列表(称为 A)显示数据中的所有键,定义如下。

<select id="A" name="A" onchange="?">
    <option value="">Please Select</option>
    <c:forEach var="entry" items="${data}">
        <option value="${entry.key}">${entry.key}</option>
    </c:forEach>
</select>

我不确定应该如何定义剩余的列表,但我想要的是基于 A 中的选择,剩余的三个下拉列表应该使用与 A 对应的 CustomObject 动态填充(A 中的值是数据中的键)。CustomObject 类定义如下

class CustomObject{
    List<String> b;
    List<String> c;
    List<String> d;
}

我不想使用 Ajax,因为 Map 中已经存在所需的所有数据。知道我怎么能做到这一点。

谢谢

4

1 回答 1

0

我找到的解决方案是声明三个全局 javascript 变量并使用传入请求的 Map 将它们初始化为每个子下拉列表的值,例如

var dataB = { <c:forEach items="${data}" var="item" varStatus="loop">  
    "${item.key}" : [ <c:forEach items="${item.value.list}" var="value"
                varStatus="subLoop"> "${value}" ${not subLoop.last ? ',':''
              </c:forEach> ]
     ${not loop.last ? ',' : ''}
     </c:forEach> };

然后有一个名为 onChange of Dropdown A 的方法,并使用与 DropDown A 中的选择对应的值填充下拉列表。

我不确定该解决方案有多优雅,但它确实有效。

于 2013-07-11T19:00:47.533 回答