javascript - 将 Map<String, Set<String>> 从 Servlet 传递到 JSP Select

标签 javascript java jsp servlets select

我有一个map<String, Set<String>> 。我试图将该对象的值从 servlet 传递到 jsp。

Map<String, Set<String>> filter_info= new HashMap<String, Set<String>>();
for(String key: results.keySet())
{
    filter_info.put(key.trim(), new HashSet<String>(Arrays.asList(results.get(key).split(","))));

}
request.setAttribute("filter",filter_info);
this.getServletContext().getRequestDispatcher("/Search.jsp")
                .forward(request, response);

我的 jsp 中有两个选择输入。我试图使第二个选择的选项( Set<String> 的值)根据第一个选择中选择的选项( key )进行更改。

<form role="search" class="search-form" id="search-form" action="#" method="post">

     <label for="Keys">Keys: </label>
       <select id="Keys">
            <c:forEach var="filter" items="${filter}">
              <option value="${filter.key}">
                <c:out  value="${filter.key}"/>
              </option>
            </c:forEach>
       </select>
        <br/>
     <label for="SetValues">Values: </label>
         <select id="SetValues">
         //the part I don't know how to change according to the key selected
         </select>
      <input type="submit" value="Filter" class="search-button">
</form>

问题是:我是否需要 javascript,或者我可以通过传递和转换请求中发送的对象来完成此操作,例如 Map<String, Set<String>> filter= (HashMap<String, Set<String>>) request.getAttribute("servletName"); ,然后迭代它并准备两个选择?

谢谢。

最佳答案

实现目标的最佳方法是

  1. 首先迭代 Set 的所有键并构建第一个下拉列表

     <label for="Keys">Keys: </label>
       <select id="Keys" onchange="updateByKey()">
            <c:forEach var="filter" items="${filter}">
              <option value="${filter.key}">
                <c:out  value="${filter.key}"/>
              </option>
            </c:forEach>
       </select>
        <br/>
      <input type="submit" value="Filter" class="search-button">
    
  2. 将 onChange 事件添加到第一个下拉列表中,每次更改时都会对服务器进行 ajax 调用并检索正确的值并构建第二个下拉列表

    <label for="SetValues">Values: </label>
          //here load the dropdown with all options of the selected key in the previous dropdown
    <select id="SetValues">
        //iterate all options of this specific key
    </select>
    

关于javascript - 将 Map<String, Set<String>> 从 Servlet 传递到 JSP Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42953820/

相关文章:

php - 制作一个 JSONpath 表达式以便它只检索一个特定的值?

java - spring-boot RabbitListener 如何将单个队列绑定(bind)到单个线程?

java - API设计建议

java - 提交表单onclick时转义javascript中的值

java - 如何避免在 Struts 中生成更多的 HTML 元素

java - 如何使用 Java 将参数从 JSP 传递到 HTTP

javascript - Setter 和 Getter 错误

javascript - 如何将php变量传递给jquery

Java:泛型只接受枚举类型

javascript - 如何获取接近另一种颜色的颜色的 rgb 值?