问题描述
最近写了一个小项目可在分页的时候遇到了一个问题,请大侠们帮忙,就是在分页时请求数据,为何发出两次请求,第一次失败,而第二次则没有传递数据。一下代码为JS创建Store数据var bookStore = new Ext.data.Store({autoLoad :true,reader: new Ext.data.XmlReader({totalRecords: "results",record: "Book",id: "id", },Ext.data.Record.create([{name: 'id'},{name: 'bookName'},{name: 'author'},{name: 'typeName'},{name: 'price'},{name: 'brief'},{name: 'publishTime'}])),proxy : new Ext.data.HttpProxy({url : 'book.do?method=getBookList'})})bookStore.load({params:{start:0,limit:5}});以下是action的方法public ActionForward getBookList(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {String satrtString = request.getParameter("start"); String limitString = request.getParameter("limit"); s = "0"; mString = "3"; System.out.println("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"+satrtString); System.out.println("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"+limitString);List books = service.getBooks(satrtString,limitString);String xml = ExtHelper.getXmlFromList(books);response.setContentType("application/xml;charset=UTF-8");response.getWriter().write(xml);return null;}在连接数据上没有问题,以下是通过firefox的firbug调试显示的请求第一次请求失败POST http://localhost:8080/EXTJS_bookManage_page/book.do?method=getBookListAborted参数头信息Post响应参数application/x-www-form-urlencodedlimit5start0源代码start=0&limit=5第二次请求成功,但是没有传递数据GET http://localhost:8080/EXTJS_bookManage_page/book.do?method=getBookList&_dc=1312505659541200 OK824ms参数头信息响应XML<?xml version="1.0" encoding="utf-8"?><list> <Total> <results>0</results> </Total></list>请问那个大侠能够帮忙解决一下啊
解决方案
你把autoLoad :true, 这行去掉,后面已经有load了。
解决方案二:
struts2的以拦截器栈实现数据的处理,其中参数拦截器会对get*,set*进行自动的处理,因此为get*的方法,在返回时会自动执行最简单的为换个方法名,或者定制拦截器栈
解决方案三:
你的方法名有问题吧,你把public ActionForward getBookList中的getBookList修改成其他的,总之不要有get开头就行,你试下,我用struts2的时候就出现过这种问题。
解决方案四:
第一次是autoLoa的原因,autoLoad便没有传递相应的参数引用第二次请求成功,但是没有传递数据 什么意思