1.最近在使用echars,发现里面的data,如果在javascript中的进行调用传递过来域中的值的话, hashMap的形式并不怎么好用, 苦恼了几个小时,终于解决了这个问题; 2. 本篇文章也解决了在js中获取request域中集合,想要遍历的问题
前提条件:
- 使用jquery.js
- 使用了echars库
- 使用china.js绘制的世界地图
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js?v=1598903772045"></script>
1.传值类型
说明: 如果我们要想在js中获取值的话,且遍历, 我们最好使用标准的json字符串的形式进行传递, 在controller中我们传递的类型如果是集合形式的对象: ArrayList这种, 我们可以使用下面类似的代码进行标准转换
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>
@RequestMapping("/allEpidemic")
public String findAll(Model model) throws JsonProcessingException {
List<Province> epidemicList = epidemicService.findAllProvince();
ObjectMapper objectMapper = new ObjectMapper();
String str_epidemic = objectMapper.writeValueAsString(epidemicList);
model.addAttribute("epidemic_str",str_epidemic);
System.out.println(str_epidemic);
return "epidemic_analysis";
}
上面这样的话, epidemic_str中的数据就是标准JSON集合字符串的形式了
2. 传值到页面问题
使用隐藏域的方式进行获取: jsp页面中:
<input type="hidden" value='<%=request.getAttribute("epidemic_str")%>' id="epidemic_str_id"/>
然后在javascript中进行获取:
var epidemicStr = document.getElementById(‘epidemic_str_id’).value;
3.data数据的传值拼接
var epidemicStr = document.getElementById('epidemic_str_id').value;
var epidemicJsonStr="[";
var epidemicArray= eval(epidemicStr);
for(var i=0 ; i<epidemicArray.length; i++){
epidemicJsonStr+="{ \"name\":"+ "\""+epidemicArray[i].provinceName+"\""+", \"value\":"+ "\""+epidemicArray[i].sum_data+"\""+ "},"
}
var result = epidemicJsonStr.substr(0, epidemicJsonStr.length - 1);
result+="]"
JSON.parse(result)
最后我们就可以正常简单的使用echars了,看完了点个赞吧,麻烦了,各位
|