一般情况下,controller的方法返回值是一个字符串时,spring会去找已这个字符串为名的jsp文件。
当需要返回一个json字符串时就会出错。
解决问题的方法是在方法上添加注解@ResponseBody
<span style="white-space:pre"> </span>@RequestMapping(value="showSaleVolumeRank")
@ResponseBody
public String showSaleVolumeRank(HttpServletRequest request,
HttpServletResponse response, Model model)
{
List<SaleDTO> saleDTOs = new ArrayList<SaleDTO>();
saleDTOs.add(new SaleDTO("云南省", 878901.92, 1085429.21));
saleDTOs.add(new SaleDTO("河北省", 733988.8, 1080040.69));
saleDTOs.add(new SaleDTO("广西壮族自治区", 691610.0, 975663.98));
saleDTOs.add(new SaleDTO("湖北省", 585583.33, 1133054.53));
map.put("sales", saleDTOs);
Gson gson = new Gson();
String json = gson.toJson(map);
System.out.println(json);
System.out.println("myjson");
return json;
}
这样的话,在前端就可以用ajax接收到json字符串了。
但是这种情况下,返回的json字符串被jquery接收后,会出现中文乱码问题,中文全部都会变成问号。。。
解决办法是为注解@RequestMapping()配置produces的值。
@RequestMapping(value = "/add", <span style="color:#ff0000;">produces = {"application/json;charset=UTF-8"}</span>)
这样在前端接收到的json字符串就不会出现中文乱码问题了。