以javascript加载从控制器传递的hashMap对象



我们正在使用Spring MVC开发一个网页。在我们的一个控制器中,我们有一个HashMap,我们应该把它发送到我们的jsp,比如:

ModelAndView model = sisoController.getGenericModelAndView(request);
HashMap<String, boolean> hashMap = new HashMap<String, boolean>();
hashMap.put("name", true); 
hashMap.put("surname", false); //... and so on
model.addObject("operationFields", hashMap);
model.setViewName("createOperation.html");
return model;

现在,我们需要访问jsp页面中document.ready时javascript部分内的hashMap

    var operationFields= ${operationFields};
    $.each(operationFields, function(key, value) {
        console.log(key + ": " + value);
    });

但这会导致以下错误:

SyntaxError: missing : after property id
var operationFields= {name=true, surname=false};

我们如何访问hashMap?

您需要将HashMap(服务器端)转换为可从Javascript(客户端)访问的内容。目前,JSP只是输出operationFieldsHashMap的字符串值,这不是有效的Javascript语法。将HashMap转换为Javascript对象文字可能是最简单的。

var operationFields = {
<c:forEach var="entry" items="${operationFields}">
    '${entry.key}': '${entry.value}',
</c:forEach>
};

最新更新