控制台显示Unexpected Exception caught setting 'year' on 'class cn.itcast.nsfw.complain.action.ComplainAction: Error setting expression 'year' with value ['2016', ]
但是程序运行正常,可以生成统计图表代码如下
JSP代码:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//获取当前年份
Calendar cal = Calendar.getInstance();
int curYear = cal.get(Calendar.YEAR);//当前年份
request.setAttribute("curYear", curYear);
List yearList = new ArrayList();
for(int i = curYear; i > curYear-5 ; i--){
yearList.add(i);
}
request.setAttribute("yearList", yearList);
%><!DOCTYPE HTML>
<html>
<head>
<%@include file="/common/header.jsp"%>
<title>年度投诉统计图</title>
</head>
<script type="text/javascript" src="${basePath }js/fusioncharts/fusioncharts.js"></script>
<script type="text/javascript" src="${basePath }js/fusioncharts/fusioncharts.charts.js"></script>
<script type="text/javascript" src="${basePath }js/fusioncharts/themes/fusioncharts.theme.fint.js"></script>
<script type="text/javascript">
//加载完dom元素后,执行
$(document).ready(doAnnualStatistic());
//根据年份统计投诉数
function doAnnualStatistic(){
//1、获取年份
var year = $("#year option:selected").val();
if(year == "" || year == undefined){
year = "${curYear}";//默认当前年份
}
//2、根据年份统计
$.ajax({
url:"${basePath }/nsfw/complain_getAnnualStatisticData.action",
data:{"year":year},
type: "post",
dataType:"json",
success: function(data){
if(data != null && data != "" && data != undefined){
var revenueChart = new FusionCharts({
"type": "line",
"renderAt": "chartContainer",
"width": "600",
"height": "400",
"dataFormat": "json",
"dataSource": {
"chart": {
"caption": year + " 年度投诉数统计图",
"xAxisName": "月 份",
"yAxisName": "投 诉 数",
"theme": "fint"
},
"data": data.chartData
} });
revenueChart.render();
} else {
alert("统计投诉数失败!");
}
},
error: function(){alert("统计投诉数失败!");}
});
}
</script>
<body>
<br>
<div style="text-align:center;width:100%;"><s:select id="year" list="#request.yearList" onchange="doAnnualStatistic()"></s:select></div>
<br>
<div id="chartContainer" style="text-align:center;width:100%;"></div>
</body>
</html>action,service dao层year可以正常接收
action代码如下
//根据年份统计投诉数
public String getAnnualStatisticData(){
//1、获取年份
HttpServletRequest request = ServletActionContext.getRequest();
int year = 0;
if(request.getParameter("year") != null){
year = Integer.valueOf(request.getParameter("year"));
} else {
//默认 当前年份
year = Calendar.getInstance().get(Calendar.YEAR);
}
//2、获取统计年度的每个月的投诉数
statisticMap = new HashMap<String, Object>();
statisticMap.put("msg", "success");
statisticMap.put("chartData", complainService.getAnnualStatisticDataByYear(year));
return "annualStatisticData";
}
serviceimpl代码如下
//根据年份统计投诉数
@Override
public List<Map> getAnnualStatisticDataByYear(int year) {
List<Map> resList = new ArrayList<Map>();
//1、获取统计数据
List<Object[]> list = complainDao.getAnnualStatisticDataByYear(year);
if(list != null && list.size()>0){
Calendar cal = Calendar.getInstance();
//是否当前年份
boolean isCurYear = (cal.get(Calendar.YEAR) == year);
int curMonth = cal.get(Calendar.MONTH)+1;//当前月份
//2、格式化统计结果
int temMonth = 0;
Map<String, Object> map = null;
for(Object[] obj: list){
temMonth = Integer.valueOf((obj[0])+"");
map = new HashMap<String, Object>();
map.put("label", temMonth+ " 月");
if(isCurYear){//当前年份
//当前年份:如果月份已过的则直接取投诉数并且值为空或null时则设为0;如果月份未过的则全部投诉数置空
if(temMonth > curMonth){//未到月份,则投诉数为空
map.put("value", "");
} else {//已过月份
map.put("value", obj[1]==null?"0":obj[1]);
}
} else {//非当前年份则直接取投诉数并且值为空或null时则设为0
map.put("value", obj[1]==null?"0":obj[1]);
}
resList.add(map);
}
}
return resList;
}
daoimpl代码如下
@Override
public List<Object[]> getAnnualStatisticDataByYear(int year) {
StringBuffer sb = new StringBuffer();
sb.append("SELECT imonth, COUNT(comp_id)")
.append(" FROM tmonth LEFT JOIN complain ON imonth=MONTH(comp_time)")
.append(" AND YEAR(comp_time)=?")
.append(" GROUP BY imonth ")
.append(" ORDER BY imonth");
SQLQuery sqlQuery = getSession().createSQLQuery(sb.toString());
sqlQuery.setParameter(0, year);
return sqlQuery.list();
}
一直无法解决,请各位帮忙查找问题在哪里?
但是程序运行正常,可以生成统计图表代码如下
JSP代码:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//获取当前年份
Calendar cal = Calendar.getInstance();
int curYear = cal.get(Calendar.YEAR);//当前年份
request.setAttribute("curYear", curYear);
List yearList = new ArrayList();
for(int i = curYear; i > curYear-5 ; i--){
yearList.add(i);
}
request.setAttribute("yearList", yearList);
%><!DOCTYPE HTML>
<html>
<head>
<%@include file="/common/header.jsp"%>
<title>年度投诉统计图</title>
</head>
<script type="text/javascript" src="${basePath }js/fusioncharts/fusioncharts.js"></script>
<script type="text/javascript" src="${basePath }js/fusioncharts/fusioncharts.charts.js"></script>
<script type="text/javascript" src="${basePath }js/fusioncharts/themes/fusioncharts.theme.fint.js"></script>
<script type="text/javascript">
//加载完dom元素后,执行
$(document).ready(doAnnualStatistic());
//根据年份统计投诉数
function doAnnualStatistic(){
//1、获取年份
var year = $("#year option:selected").val();
if(year == "" || year == undefined){
year = "${curYear}";//默认当前年份
}
//2、根据年份统计
$.ajax({
url:"${basePath }/nsfw/complain_getAnnualStatisticData.action",
data:{"year":year},
type: "post",
dataType:"json",
success: function(data){
if(data != null && data != "" && data != undefined){
var revenueChart = new FusionCharts({
"type": "line",
"renderAt": "chartContainer",
"width": "600",
"height": "400",
"dataFormat": "json",
"dataSource": {
"chart": {
"caption": year + " 年度投诉数统计图",
"xAxisName": "月 份",
"yAxisName": "投 诉 数",
"theme": "fint"
},
"data": data.chartData
} });
revenueChart.render();
} else {
alert("统计投诉数失败!");
}
},
error: function(){alert("统计投诉数失败!");}
});
}
</script>
<body>
<br>
<div style="text-align:center;width:100%;"><s:select id="year" list="#request.yearList" onchange="doAnnualStatistic()"></s:select></div>
<br>
<div id="chartContainer" style="text-align:center;width:100%;"></div>
</body>
</html>action,service dao层year可以正常接收
action代码如下
//根据年份统计投诉数
public String getAnnualStatisticData(){
//1、获取年份
HttpServletRequest request = ServletActionContext.getRequest();
int year = 0;
if(request.getParameter("year") != null){
year = Integer.valueOf(request.getParameter("year"));
} else {
//默认 当前年份
year = Calendar.getInstance().get(Calendar.YEAR);
}
//2、获取统计年度的每个月的投诉数
statisticMap = new HashMap<String, Object>();
statisticMap.put("msg", "success");
statisticMap.put("chartData", complainService.getAnnualStatisticDataByYear(year));
return "annualStatisticData";
}
serviceimpl代码如下
//根据年份统计投诉数
@Override
public List<Map> getAnnualStatisticDataByYear(int year) {
List<Map> resList = new ArrayList<Map>();
//1、获取统计数据
List<Object[]> list = complainDao.getAnnualStatisticDataByYear(year);
if(list != null && list.size()>0){
Calendar cal = Calendar.getInstance();
//是否当前年份
boolean isCurYear = (cal.get(Calendar.YEAR) == year);
int curMonth = cal.get(Calendar.MONTH)+1;//当前月份
//2、格式化统计结果
int temMonth = 0;
Map<String, Object> map = null;
for(Object[] obj: list){
temMonth = Integer.valueOf((obj[0])+"");
map = new HashMap<String, Object>();
map.put("label", temMonth+ " 月");
if(isCurYear){//当前年份
//当前年份:如果月份已过的则直接取投诉数并且值为空或null时则设为0;如果月份未过的则全部投诉数置空
if(temMonth > curMonth){//未到月份,则投诉数为空
map.put("value", "");
} else {//已过月份
map.put("value", obj[1]==null?"0":obj[1]);
}
} else {//非当前年份则直接取投诉数并且值为空或null时则设为0
map.put("value", obj[1]==null?"0":obj[1]);
}
resList.add(map);
}
}
return resList;
}
daoimpl代码如下
@Override
public List<Object[]> getAnnualStatisticDataByYear(int year) {
StringBuffer sb = new StringBuffer();
sb.append("SELECT imonth, COUNT(comp_id)")
.append(" FROM tmonth LEFT JOIN complain ON imonth=MONTH(comp_time)")
.append(" AND YEAR(comp_time)=?")
.append(" GROUP BY imonth ")
.append(" ORDER BY imonth");
SQLQuery sqlQuery = getSession().createSQLQuery(sb.toString());
sqlQuery.setParameter(0, year);
return sqlQuery.list();
}
一直无法解决,请各位帮忙查找问题在哪里?
解决方案 »
- struts2 写文件下载的错误
- JAVA 社区型消息机制,应该怎么个思路?
- 菜鸟求助 简单的登陆验证 jsp+javabean+mysql
- 请问ext designer1.2设计出来的组件如何使用。
- 下面的代碼需要如何修改,就是調不通,郁悶!!謝謝!!
- ◎◎◎探讨◎◎◎做一个地域性门户网站需要多长时间,需要什么技能?
- 为什么我的eclipse打的包,web-info下没有class文件夹
- MyEclipse中创建java project搭建Spring环境
- jsp连接MYSQL的问题?在线等待!急#
- struts中文问题
- nginx反向代理成功,可是css和js样式加载不出来。。
- websocket与其他线程之间的通信
<result type="json" name="annualStatisticData">
<param name="root">statisticMap</param>
</result>
这部分的annualStatisticData是否写错了?
url:"${basePath }/nsfw/complain_getAnnualStatisticData.action"
把nsfw前面的/去掉就行了!