gpt4 book ai didi

javascript - 使用 JavaScript 从 JSP 页面访问 java HashMap

转载 作者:太空宇宙 更新时间:2023-11-04 10:45:15 25 4
gpt4 key购买 nike

我在 Spring MVC 中有一个 Controller 类,我在其中返回一个 HaspMap 作为模型属性 -

@ModelAttribute("regPrefix")
public Map<String, String> getRegPrefixesOfDepartmentforGroup(final Model model, final HttpServletRequest request) {
final Map<String, String> regPrefixOfDept = new HashMap<String, String>();
regPrefixOfDept.put(regKey, regPrefix);
return regPrefixOfDept;
}

现在在相应的 JSP 页面中,我尝试使用 JavaScript 访问 Hashmap 并将 Hasmap 的键/值对存储在变量中。我正在尝试如下所示,但这是不对的。谁能建议如何做到这一点

<script>
$("#deptIdSelection").change(function()
{
var obj = document.getElementById("deptIdSelection");
var textItem = obj.options[obj.selectedIndex].text;
alert(textItem);
var mapObj = "${regPrefix}";
for(var key in mapObj)
alert(key +" ->"+ mapObj[key]);

}
);
</script>

最佳答案

尝试像这样访问 map 值:

${regPrefix.key} 

如果您想迭代映射键,那就没那么容易了:JSTL 在服务器端执行并呈现为纯文本 - 不会创建 JavaScript 对象。以下行var mapObj = "${regPrefix}";将被渲染为 HashMap 的字符串表示形式,而不是 JavaScript 对象。

要将 map 转换为 JavaScript 对象,我建议您使用以下方法之一:

1) 将您的 map 转换为 JSON并将其作为 String 传递。因此,当它被渲染为 JavaScript 代码时,它将看起来像一个常规的 JS 对象: var mapObj = {"key": "value", ...}; 。您可以使用Gson或任何其他 JSON库来实现这一点:

final Map<String, String> regPrefixOfDept = new HashMap<String, String>();
regPrefixOfDept.put(regKey, new Gson().toJson(regPrefixOfDept));

然后var mapObj = ${regPrefix}; (请注意,您不需要引号,因为您希望 mapObj 成为 JS 对象,而不是字符串)

2) 使用 <c:forEach> 迭代您的 map 生成JS对象:

var mapObj = {
<c:forEach items="${regPrefix}" var="item" varStatus="loop">
${item.key}: '${item.value}' ${not loop.last ? ',' : ''}
</c:forEach>
};

在这两种情况下,您都应该能够调用

for(var key in mapObj)
alert(key +" ->"+ mapObj[key]);

关于javascript - 使用 JavaScript 从 JSP 页面访问 java HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48482955/

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