my first blogs,SSM框架下JSP页面javaScript获取后端Controller层SpringMVC-Model的值
第一次写博客,记录一下自己遇到的一些问题。
ssm框架下,需要将一个list集合由model传入到jsp页面的script标签中,
我一开始使用了几个方法都报了数据类型错误。
数据实际上能够接收到,后来发现,只要将复杂对象转为json数据,jsp就能够直接接收
一、将list转为JSON数据
controller代码
后端将list集合通过json工具类转为json类型的数组
try{
List<SportBO> sportList = this.sportClient.getLevelOneSport();
model.addAttribute("allSport",sportList);
JsonArray JsonSport = JSONArray(JSON.toJSONString(sportList));
model.addAttribute("JsonSport",JsonSport);
return "athlete/athlete-list";
}catch(Exception e){
return null;
}
JSP 代码
直接通过el表达式获取
var data = ${JsonSport};
通过AJAX请求
Controller代码
@requestMapping("/queryCountry")
public void queryCountry(HttpServletResponse response) throws Exception{
try{
response.setContentType("application/json;charset=UTF-8");
List<CountryBO> countryList = this.countryClient.findAll();
JSONObject json = new JSONObject();
json.put("countryList",countryList);
response.getWriter.write(json.toString());
}catch(Exception e){
e.printStackTrace();
}
}
JSP代码
<script type ="text/javascript">
var countryList //全局变量 方便调用
window.onload=fuction(){
//ajax方法
$.ajax({
type:"GET",//请求方式
url:"/athlete/queryCountry",//请求url
dataType:"json",//返回数据类型
async:false,//设置为同步请求
cache:false,//设置不从浏览器缓存加载信息
success:fuction(data){
countryList = data.countryList;
}
})
}
</script>
话外:也可以通过将数据赋值给hidden 隐藏域 再在js中获取