extjs +String2 +Spring 下的分页 以及返回json格式错误的问题
首先,分页 很简单.
1前台extjs数据源,
var shipMgrStore = Ext.create('Ext.data.Store', {
    model: 'App.ShipMgr.model.ShipModel',
    autoLoad: true,
    pageSize: 15,
//   timeout: 300000,
//    simpleSortMode:true,
    proxy: {
        type: 'ajax',
        url:'<%=request.getContextPath()%>/getDuncanJiang.action',
        reader: {
            reader: 'json',
            root: 'sfdcConfigList',
            totalProperty: 'totalProperty'
        },
    },
});
其他的属性就不说了.
主要是两个参数:一个是 root :表示接收到的数据从这个 sfdcConfigLIst 开始解析
一个是 totalProperty :表示返回数据的总行数
2 grid
var shipMgrGrid = Ext.create('Ext.grid.Panel', {
    store: shipMgrStore,
    columnLines: true,
    rowLines: true,
    region: 'center',
    autoScroll: true,
    forceFit: true,
     loadMask: true,
     border: true,
    renderTo:'showPanel',
    bbar: Ext.create('Ext.toolbar.Paging', {
        id:'<portlet:namespace />bbar',
        store: shipMgrStore,
        pageSize:15,
        displayInfo: true
    }),
    columns: [
        Ext.create('Ext.grid.RowNumberer', {
            text: 'numbr',
           width: 50
        }), {
            text: 'id',
            dataIndex: 'id'
        }
        , {
            text: 'plant',
            dataIndex: 'plant'
        }, {
            text: 'deviceId',
            dataIndex: 'deviceId'
        }, {
            text: 'sfdcPort',
            dataIndex: 'sfdcPort'
        }, {
            text: 'description',
            dataIndex: 'description'
        }
    ],
    bbar: Ext.create('Ext.toolbar.Paging', {
            id: '<portlet:namespace />duncanjiangbbar',
            pageSize: 15,
        store: shipMgrStore,
        displayInfo: true,
        displayMsg: '<%= bundle.getString("message.records") %> {0} - {1} of {2}',
        emptyMsg: '<%= bundle.getString("page.nodata") %>'
    })
});
传递二个参数 limit : 每页显示多少条 (pageSize)
start :从第几条数据开始 (自动传递)
当你在前台点击下一页的时候,它就会自动把 limit 和 start 传到后台查询数据,然后返回对面页的数据过来
后台的话
private int start;
	  //get  set
   private int limit;
//get set
public String findSfdcByDeviceId(){
        try {
            int limit=this.limit;
            int start=this.start;
    // 根据传过来的参数,查询数据
      this.fileNameList=testService.getSfdcCOnfigObjbyDeviceId(type,start,limit);
      //总条数
        totalProperty=testService.getSfdcCOunt(type);
}
其实就是 返回 两个数据集,一个是 fileNameList,当页数据, totalPropery是总共有多少条数据.
定义属性接收前台传过来的 limit,start,并且生成get,set方法
&&&&&&&&&&&&&&&我是傲娇的分割线&&&&&&&&&&&&&&&&&&&&&&&
然后做这个分页的时候还遇上一个问题,返回的 JSON数据到前台的时候报了一个错
html><head><title>Apache Tomcat/7.0.39 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper with modifiers "public"</h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u>org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper with modifiers "public"</u></p><p><b>description</b> <u>The server encountered an internal error that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper with modifiers "public"
    org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:243)
    org.apache.struts2.json.JSONWriter.process(JSONWriter.java:165)
    org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
    org.apache.struts2.json.JSONWriter.write(JSONWriter.java:99)
    org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:112)
    org.apache.struts2.json.JSONResult.execute(JSONResult.java:198)
    com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
这个是由于后台返回前台的数据中,会包含所有的get开头的,包括你的get属性,get开头的方法等等等等.导致的问题.
解决 : 1.在这些不需要返回的get方法的前面加上@JSON(serialize=false)这个注解.
2.把查询返回的数据集做一个简单的处理,通过gson进行解析.具体为什么要这样....我也不清楚..... 哈哈哈哈,反正这样就可以了
public String findSfdcByDeviceId(){
        try {
            int limit=this.limit;
            int start=this.start;
            this.fileNameList=testService.getSfdcCOnfigObjbyDeviceId(type,start,limit);
            Gson gson=new Gson();
            List<SfdcConfigObj> rs=new ArrayList<SfdcConfigObj>();
            String str=JSONArray.fromObject(fileNameList).toString();
            Type  ortype = new TypeToken<ArrayList<SfdcConfigObj>>() {}.getType();
              rs=gson.fromJson(str, ortype);
              for(SfdcConfigObj sfdc : rs){
                  sfdcConfigList.add(sfdc);
              }
            totalProperty=testService.getSfdcCOunt(type);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return Action.SUCCESS;
    }
注意!!! 如果你要返回的,比如一个属性,暂且叫他为 number.这时候他的get方法如果你也加了这个注解的话,那么前台是获取不到这个值的.
extjs +String2 +Spring 下的分页 以及返回json格式错误的问题的更多相关文章
- spring 4.x下让http请求返回json串
		当前很多应用已经开始将响应返回为json串,所以基于springframework框架开发的服务端程序,让响应返回json字符串成为了一种常用手段. 这里介绍一下如何在spring-MVC框架下方便快 ... 
- Spring MVC 学习笔记11 —— 后端返回json格式数据
		Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ... 
- Spring Boot教程(二十五)返回JSON格式
		在上述例子中,通过@ControllerAdvice统一定义不同Exception映射到不同错误处理页面.而当我们要实现RESTful API时,返回的错误是JSON格式的数据,而不是HTML页面,这 ... 
- SpringMVC通过实体类返回json格式的字符串,并在前端显示
		一.除了搭建springmvc框架需要的jar包外,还需要这两个jar包 jackson-core-asl-1.9.2.jar和jackson-mapper-asl-1.9.2.jar 二.web,. ... 
- 【django后端分离】mysql原生查询命令后,RawQueryset类型的自定义序列化返回json格式
		1:设置mysql原生分页 # 监控系统首页显示分页 def MyPagination(limitid,offsetid): limitid =str(limitid) offsetid =str(o ... 
- webapi返回json格式优化
		一.设置webapi返回json格式 在App_Start下的WebApiConfig的注册函数Register中添加下面这代码 config.Formatters.Remove(config.For ... 
- ajax访问服务器返回json格式
		使用ajax访问服务器返回多条数据,比如返回一个表中的所有数据,页面该如何处理呢?如何获取数据呢?一直不会用ajax返回json格式,今天研究了下,分享给大家~ 首先需要引用服务,点击项目右键,添加引 ... 
- webapi返回json格式,并定义日期解析格式
		1.webapi返回json格式 var json = config.Formatters.JsonFormatter; json.SerializerSettings.PreserveReferen ... 
- 返回JSON格式(二十五)
		在上述例子中,通过@ControllerAdvice统一定义不同Exception映射到不同错误处理页面.而当我们要实现RESTful API时,返回的错误是JSON格式的数据,而不是HTML页面,这 ... 
随机推荐
- [MNIST数据集]输入图像的预处理
			因为MNIST数据是28*28的黑底白字图像,而且输入时要将其拉直,也就是可以看成1*784的二维张量(张量的值在0~1之间),所以我们要对图片进行预处理操作,是图片能被网络识别. 以下是代码部分 i ... 
- 【Linux】-- Linux上java运行环境的配置(JDK+TOMCAT)
			1.JDK安装 安装之前首先要查询软件是否存可以直接使用yum安装 yum search java | grep open 选择需要的版本安装 注意:*星号代表下载该版本的所有文件,不能少. 验证是否 ... 
- String painter HDU - 2476 -区间DP
			HDU - 2476 思路:分解问题,先考虑从一个空串染色成 B串的最小花费 ,区间DP可以解决这个问题 具体的就是,当 str [ l ] = = str [ r ]时 dp [ L ] [ R ] ... 
- fixed定位文本框引发的问题
			<!-- 代码段1 --> <body> <!-- 可以滚动的区域 --> <main id="J_box"> <!-- 内容 ... 
- Django实例
			更新:今年8月在深圳和嵩天老师居然见面了,很开心.嵩天老师很和蔼. =========== 今天看了嵩天老师的视频,感觉讲的很好,于是看着视频自己做了一个初步的实例认识. 步骤1,新建一个Web框架 ... 
- SDOI2018:原题识别
			题解: https://files.cnblogs.com/files/clrs97/old-solution.pdf Code: #include<cstdio> #include< ... 
- CSS3_扇形导航_transitionend 事件
			扇形导航 圆形按钮,切换一系列图片导航的显示与隐藏. 如果涉及过渡动画,定位的 top 和 left 必须写 Math.sin(弧度) 一圈弧度 = 2π,一圈角度 = 360 弧度 = (deg*2 ... 
- Tomcat报错invalid LOC header
			原因: 可能是jar包有问题. 解决方法: 1.找到加载不了的类对应的jar包. 2.在tomcat中webapps/INF/lib中找到对应的jar包,然后删除. 3.重新下载其它版本的jar包. ... 
- spring boot 开始部署报Whitelabel Error Page错解决方法
			因为时刚刚才学spring boot ,第一次碰到的问题,花了半个小时终于明白了,SpringBoot 的application类会自动扫描子包类下的mapping方法,因此application类不 ... 
- JDBC的理解
			import java.sql.*;//倒入java.sql包 public class JDBC { //封装没有返回值的jdbc函数(Update) --适用于增 删 改 public stati ... 
