【问题标题】:Dynamic DropDown List in JSP without Using AJAX不使用 AJAX 的 JSP 中的动态下拉列表
【发布时间】:2013-07-09 21:40:19
【问题描述】:

我想在 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 中。知道我怎么能做到这一点。

谢谢

【问题讨论】:

  • 您要一次填充还是多次填充?
  • 每次在 DropDown A 中进行新选择时,下拉菜单都应该更新。

标签: jquery jsp servlets struts


【解决方案1】:

我找到的解决方案是声明三个全局 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 中的选择对应的值填充下拉列表。

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

【讨论】:

    猜你喜欢
    • 2015-09-09
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2016-04-24
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多