当前位置: 首页 > 知识库问答 >
问题:

将java映射从JSTL/JSP传递到JavaScript方法

冀望
2023-03-14

我们有两个相关的下拉列表,其中一个下拉列表的结果与另一个下拉列表相关。

我们定义了一个映射,以映射的形式选择什么,如下所示;

Map<String,Map<String,String>> topics = new HashMap<String, Map<String,String>>();
        Map<String,String> ds = new HashMap<String, String>();
        ds.put("Array", "Array");
        ds.put("LL", "LL");
        topics.put("DS",  ds);
        Map<String,String> algo = new HashMap<String, String>();
        algo.put("BS", "BS");
        algo.put("Sorting", "Sorting");
        topics.put("Algorithm", algo);

        Map<String,String> phil = new HashMap<String, String>();
        phil.put("phil1", "phil1");
        phil.put("phil2", "phil2");
        topics.put("Philosophy",  phil);

        Map<String,String> others = new HashMap<String, String>();
        others.put("others", "others");
        topics.put("Others", others);

根据上面的地图,当选择“DS”时,我们希望显示“Ärray”和“LL”。其他映射的情况也类似。

我将此映射传递给JSP,并使用JSTL呈现选项。在决定调用JS来填充后续下拉列表时,我想将其更改为JSON。

我想把选定选项的特定映射传递给JS方法,并填充后续的下拉列表。

转换到JSON是唯一的方法吗?如果是,从控制器传递如何?如果我们不从控制器传递它,在JSP本身中有什么更干净的方法来实现它?

JSP块如下:

<div>Subject</div>
        <select name="topic"  onchange="callJavaScriptMethodWithMapOfSelectedComponent(mapOfSelectedValue)");">
            <c:forEach var="entry" items="${topics}">
                    <option value="${entry.key}">${entry.key}</option>
            </c:forEach>
        </select>
<select name="college">
                    <option value="default">Select Subject</option>
           </select>

根据在第一个下拉列表中选择的值,我们需要在第二个下拉列表中填充值。

JS方法将在第一个下拉列表中获取选定值的映射,并填充第二个下拉列表。

  function setOptions(chosen) {
var selbox = document.myform.college;

selbox.options.length = 0;
if (chosen == " ") {
  selbox.options[selbox.options.length] = new Option('Please select one of the options above first',' ');

}
  selbox.options[selbox.options.length] = new Option('//Choosen from the map passed','oneone');

}

}

共有1个答案

翁文康
2023-03-14

首先,我认为你最好改变它,这样主题就是一张地图

接下来,您可以选择将映射转换为JSON并使用eval在javascript中填充对象,或者手动横切映射键并将它们添加到对象中,这一切都取决于您手边将映射序列化为JSON服务器端的工具(您可以使用新的JSONObject(主题);来自json。org)然后将json求值为Javascript上的变量。

 类似资料:
  • 我正在尝试将包含object的ArrayList从servlet传递到JSP。但是 Servlet文件: JSP文件:

  • 我正在尝试将某些值从servlet传递到JSP页面,并添加已传递到标记的值,阅读了许多文章,我得到了以下代码。 使用输入页面选择文件 验证上传的文件 调用上传。java将上传的文件保存在WEB-INF中 在上载的文件中,选定的文件保存为“我的”。txt 使用缓冲区读取文件内容并将其保存到变量 将其传递到JSP页面 上载JAVA 上传文件后, mypage.jsp 现在,当我点击上传按钮完成所有这些

  • 我无法从列表映射器(字符串公司)向对象映射器传递一些公共参数 起初,我使用的是接口而不是抽象类。而且没有@AfterMapping方法。事实上,我不知道如何正确地将其作为String公司@Context传递。有没有@Context和@AfterMapping,或者至少有它,所以我的问题是,当列表映射器getEmployeeFromDTO按顺序调用“item”mapper getEmployeeFr

  • 问题内容: 当我尝试将Servlet中的列表值设置为会话变量并像JSP一样访问它时, 做得到 JSP 我在JSP中遇到错误,因为“列表无法解析为类型” 那我该怎么做呢?我想将列表从Servlet传递到JSP并填充一个下拉列表。 问题答案: 您要导入列表和演员表吗?

  • 如何将表单信息从jsp传递到java再传递到jsp。 我有一个jsp表单,当我提交它时,它会直接传递到另一个显示这些信息的jsp页面。但我想先在java文件中处理这些信息,然后再将其传递给jsp。 我在jsp中做了类似的事情。。 然后在process.java我使用request.set属性(“数据”)来存储处理后的数据。但是如何将其重定向回html视图文件?抱歉,这里是新用户。 对不起,这应该是

  • 问题内容: 我想将关联数组传递给json wcf服务。 因此,在JavaScript中,我与此类似: 在我的wcf服务中,我希望有一个字典: 但是它将地图作为[Object object]发送而不是序列化,因为’map’实际上只是我为其分配属性的对象。 有谁知道我可以正确地序列化它以使其由WCF服务反序列化为Dictionary对象? 问题答案: 默认情况下,WCF不表示为JSON对象- 而是将它