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

将java映射从JSTL/JSP传递到JavaScript方法,java,javascript,json,jsp,Java,Javascript,Json,Jsp,我们有两个相关的下拉列表,其中一个下拉列表的结果与另一个下拉列表相关 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 fir

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

  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,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);
  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>,这将更有意义,因为它是一个单一的深度层次结构

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

}

}

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

为什么在键和值相同的情况下使用hashmap?这只是一个示例,我可能有一些东西(例如主题代码和名称)您能够解决它吗?我也需要相同的实现。如果您已经解决了,请解释实现。
  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');

}

}