不使用AJAX的JSP中的动态DropDown列表

时间:2013-07-09 21:40:19

标签: jquery jsp servlets struts

我想在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中已经存在所需的所有数据。任何想法我怎么能实现这一点。

由于

1 个答案:

答案 0 :(得分: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中的选择对应的值填充下拉列表。

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