1、可能是由于发送请求时发送的参数类型和Controller中的参数类型不一致导致的
例如下面 value='<%= session.getAttribute("clGrade")%>'这样取出来的值是string,而我后台定义的int clGrade,就会报400错误,所以前面ajax请求里面的data应该是 value=<%= session.getAttribute("clGrade")%>(去掉引号,这样获取到的就是int)
$("#search").click(function() {
var clGrade =<%= session.getAttribute("clGrade")%>
$.ajax({
type:"post",
url:"majorAnalysisData/findMajorAnalysisData",
dataType:"json",
data: {
"clGrade":clGrade
},
success:function(data){
alert(data)
},
error:function(err){
alert("发生错误");
}
});
});
public List<MajorAnalysisData> findMajorAnalysisData(int clGrade) {
List<MajorAnalysisData> majorAnalysisDatalist = new ArrayList<MajorAnalysisData>();
MajorAnalysisData majorAnalysisData = new MajorAnalysisData();
//根据学年获取专业名称
List<String> majorsName = classService.findAllMajorsByYear(clGrade);
for (int i =0;i<majorsName.size();i++) {
//设置专业名称
majorAnalysisData.setClMajor(majorsName.get(i));
//设置专业人数
List<Student> studentlist = studentService.findAllStudentsByClMajorAndStGrade(majorsName.get(i), String.valueOf(clGrade));
majorAnalysisData.setMaStudentNum(studentlist.size());
//设置专业挂科人数
List<Student> failStudentlist = studentService.findFailStudent(majorsName.get(i), String.valueOf(clGrade));
majorAnalysisData.setMaFailStudentNum(failStudentlist.size());
//设置补考未通过人数
List<Student> makeupFailStudentlist = studentService.makeupFailStudent(majorsName.get(i), String.valueOf(clGrade));
majorAnalysisData.setMakeupFailNum(makeupFailStudentlist.size());
//设置补考通过人数
majorAnalysisData.setMakeupSuccessNum(failStudentlist.size()-makeupFailStudentlist.size());
//设置重修人数
majorAnalysisData.setRebuildNum(failStudentlist.size()-makeupFailStudentlist.size());
majorAnalysisDatalist.add(majorAnalysisData);
System.out.println(majorAnalysisData.toString());
}
return majorAnalysisDatalist;
}
2、可能是参数的个数不一致