gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:49:05 25 4
gpt4 key购买 nike

我们有几个相关的下拉菜单,其中一个下拉菜单的结果与其他下拉菜单相关。

我们定义了一个映射,以 map 的形式定义选择什么,就像这样;

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”。其他映射的情况类似。

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

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

转换为 JSON 是唯一的方法吗?如果是,如何从 Controller 传递它?如果我们不从 Controller 传递它,那么在 JSP 本身中传递它的更简洁的方法是什么?

JSP block 如下:

<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');

}

}

最佳答案

首先,我认为您最好将其更改为一个 Map < String, List < String >>,这样更有意义,因为它是一个单一的深度层次结构。

接下来,您可以选择将 map 转换为 JSON 并使用 eval 在 javascript 中填充对象,或者手动遍历 map 键并将它们添加到对象中,这完全取决于您手头的工具将 map 序列化到 JSON 服务器端(您可以使用 new JSONObject(topics); 来自 json.org),然后将 json 评估为 Javascript 上的变量。

关于java - 将 java 映射从 JSTL/JSP 传递到 JavaScript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23611935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com