日期:2014-05-17  浏览次数:20697 次

struts2下ajax返回500,java代码段执行到创建createquery时停止,控制台不报错


function reserveQuery(){
     $.ajax({
     type: "post",
     url: "rsvqueryAjax.action",
     data: "startdate="+$("#startdate").val()+"&enddate="+$("#enddate").val(),
     success: function(json){
     alert(1)
    
     }
     })
     }


rsvqueryAjax.action里面调用下面的方法:

public static List<RoomType> getAvailableRoomTypes(String startDateStr,String endDateStr){
System.out.println("进入方法");
Session session = HibernateSessionFactory.getSession();
System.out.println("create session");
String hql1 = "select room.roomtype from Reservation where indate > :enddate or outdate < :startdate";
java.sql.Date startdate = java.sql.Date.valueOf(startDateStr);   
java.sql.Date enddate = java.sql.Date.valueOf(endDateStr);   
System.out.println("date success");
//list1表示状态为“已预订”的房间中在指定日期范围还可预订的房型
Query query = session.createQuery(hql1);
System.out.println("create query");
query.setDate("startdate", startdate);
query.setDate("enddate", enddate);
System.out.println("set date");
List<RoomType> list1 = query.list();
System.out.println("list get");
list1 = MyUtils.removeDuplicate(list1);
          ……

就是执行到createquery那一行下面不执行了,控制台也没错误,用firebug发现NetworkError: 500 Internal Server Error - http://localhost/rujiahotel/rsvqueryAjax.action"

hql应该是没错的,我在普通的test类里面测试这个方法是好使的。

------解决方案--------------------
需要更多的错误信息,或者看看哪行出错
------解决方案--------------------
jar 冲突了。网上
当在几种框架集成的时候,在调用HibernateDaoSupport中的某个方法时会出现:

java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 的错误。这是因为在struts2自带的antlr-2.7.2.jar包的版本较低。

需要换成antlr-2.7.6.jar。其实在项目中已经存在了antlr-2.7.6.jar这个包,现在唯一需要做的就是删除antlr-2.7.2.jar包。

选择windows---preferences---在文本框中搜索struts 2(中间有空格)---选择struts 2---选择antlr-2.7.2.jar---Remove---OK
------解决方案--------------------
如果工程里你确认就剩一个antlr了,那么再确认一下真正的部署目录里是否还有2个jar包,部署也可能出问题的。