我在我的控制器中传递如下所示的模型(下面只是一个例子,因为我无法粘贴我的实际代码)。
Map<String, MyObject> map = new HashMap<>();
List<String> graphLabel = Arrays.asList("EARTH","MOON");
String data_1 = "[[1,70],[2,104],[3,120],[4,93]]";
String data_2 = "[[1,57],[2,19],[3,87],[4,128]]";
map.put("metaData_1", new MyObject("Day", graphData, data_1));
map.put("metaData_2", new MyObject("Day", graphData, data_1));
在我的控制器中,我将上面生成的地图添加到ViewAndModel,如下所示
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("dataModel", convertToJSON(map));
modelAndView.setViewName("My_JSP_PAGE.jsp");
return modelAndView;
现在在我的JSP中使用javascript我需要访问这个值。我如何访问我在ModelAndView中添加的地图(迭代键并检索MyObjects的属性)
我尝试了以下方法,但没有运气......我甚至无法获得js警报的值。
private String convertToJSON(Map map) { ObjectMapper mapper = new ObjectMapper(); String jsonString = null; try { jsonString = mapper.writeValueAsString(map); } catch (JsonProcessingException e) { } return jsonString; }
private JSONObject convertToJSON(Map map) { JSONObject jsonObject = new JSONObject(); jsonObject.putAll(map); return jsonObject; }
下面是我尝试获取这些值的示例jsp,
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
google.charts.setOnLoadCallback(retrieveData());
function retrieveData() {
alert("${dataModel}");
}
</script>