steps2-->myAction-1
buildJSONString
private String jsonString;
public String buildJSONString(){
List<EmergencyCarInfo> list = null;
StringBuffer _JSONStr = null;
String zoneCode =StringUtil.getShortZoneGB( RequestUtil.getParam(request, "zoneCodeQuery", ""));
String unitCode = RequestUtil.getParam(request, "unitCodeQuery", "");
String carType = RequestUtil.getParam(request, "carTypeQuery", "");
String useType = RequestUtil.getParam(request, "useTypeQuery", "");
String callback = this.callback;
int start = this.start;
int limit = this.limit;
try {
list = emergencyCarInfoService.getCarAllList(zoneCode, unitCode, carType, useType, "");
List<EmergencyCarInfo> pageList = list.subList((start > 0 ? start : 0), (list
.size() < ((start > 0 ? start : 0) + limit) ? list.size()
: ((start > 0 ? start : 0) + limit)));
_JSONStr = new StringBuffer();
_JSONStr.append(callback).append("({\"total\":").append(list.size())
.append(",\"results\":");
JsonConfig cfg = new JsonConfig();
cfg.registerJsonValueProcessor(java.util.Date.class,
new DateJsonValueProcessor("yyyy-MM-dd"));
cfg.registerJsonValueProcessor(java.sql.Date.class,
new DateJsonValueProcessor("yyyy-MM-dd"));
JSONArray jsonObject = JSONArray.fromObject(pageList, cfg);//[{..},{..}]
_JSONStr.append(jsonObject.toString());
} catch (Exception e) {
log.error("单位车辆信息管理", e);
jsonString = "[]";
}
_JSONStr.append("})");
jsonString = _JSONStr.toString();
return Constants.JSONSTRING_RESULT_NAME;
}
public String getJsonString() {
return jsonString;
}
public void setJsonString(String jsonString) {
this.jsonString = jsonString;
}
看到以上的代码,需要解释的是JsonConfig对象json-lib-2.2.1-jdk15.jar中定义,
Constants.JSONSTRING_RESULT_NAME的值为‘jsonStringPage.jsp’;页面内容是
<%@page pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:property value="jsonString" escape="false"/>
js
var gridStore = new Ext.data.Store({
proxy : new Ext.data.ScriptTagProxy({
url : 'http://www.cnblogs.com/../emergencyCarInfo/buildJSONString.action?unitCodeQuery='+currentThemeOrgCode
}),
reader : new Ext.data.JsonReader({
root : 'results',
totalProperty : 'total',
id : 'rid'
}, [
{
name : 'rid',
mapping : 'rid'
}, {
name : 'zoneGb',
mapping : 'zoneGb'
}, {
name : 'zoneName',
mapping : 'zoneName'
}, {
name : 'orgType',
mapping : 'orgType'
}, {
name : 'carName',
mapping : 'carName'
}, {
name : 'carNo',
mapping : 'carNo'
}, {
name : 'seatNum',
mapping : 'seatNum'
}, {
name : 'tonUnm',
mapping : 'tonUnm'
}, {
name : 'driver',
mapping : 'driver'
}, {
name : 'orgPhone',
mapping : 'orgPhone'
}, {
name : 'driverMobile',
mapping : 'driverMobile'
}, {
name : 'buyDate',
mapping : 'buyDate'
}, {
name : 'carStatus',
mapping : 'carStatus'
},{
name : 'carType',
mapping : 'carType'
},{
name : 'useType',
mapping : 'useType'
}, {
name : 'useRemark',
mapping : 'useRemark'
}, {
name : 'carPhoto',
mapping : 'carPhoto'
}, {
name : 'hasPhoto',
mapping : 'hasPhoto'
}, {
name : 'inputUnitcode',
mapping : 'inputUnitcode'
}, {
name : 'inputUnit',
mapping : 'inputUnit'
}, {
name : 'inputIdcard',
mapping : 'inputIdcard'
}, {
name : 'inputMan',
mapping : 'inputMan'
},{
name : 'inputDate',
mapping : 'inputDate'
}
]),
sortInfo : {field : 'inputDate', direction : 'DESC'},
remoteSort : false
});
var sm = new Ext.grid.CheckboxSelectionModel();
var cm = new Ext.ux.grid.LockingColumnModel([sm,
{
id : 'carName',
header : "车辆名称",
dataIndex : 'carName',
width :200,
align : 'center',
sortable : false,
renderer:function(value){
if(value==null){
return '';
}
return '<div align=left>'+value+'</div>';
},
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}, {
id : 'carNo',
header : "车辆牌照",
dataIndex : 'carNo',
width : 120,
align : 'center',
sortable : false,
renderer : function(value) {
if (value == null)
return '';
return value;
},
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}, {
id : 'seatNum',
header : "座位数(人)",
dataIndex : 'seatNum',
width : 120,
align : 'center',
sortable : false,
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}, {
id : 'tonUnm',
header : "吨位数(吨)",
dataIndex : 'tonUnm',
width : 120,
align : 'center',
sortable : false,
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}, {
id : 'driver',
header : "驾驶员姓名",
dataIndex : 'driver',
width : 120,
align : 'center',
sortable : false,
renderer : function(value) {
if (value == null)
return '';
return value;
},
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
},{
id : 'orgPhone',
header : "单位电话",
dataIndex : 'orgPhone',
width : 120,
align : 'center',
sortable : false,
renderer : function(value) {
if (value == null)
return '';
return value;
},
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
},{
id : 'driverMobile',
header : "驾驶员手机",
dataIndex : 'driverMobile',
width : 120,
align : 'center',
sortable : false,
renderer : function(value) {
if (value == null)
return '';
return value;
},
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
},{
id : 'buyDate',
header : "车辆购买日期",
dataIndex : 'buyDate',
width : 120,
align : 'center',
sortable : false,
format:'Y-m-d',
renderer:function(value){
if(value==null){
return '';
}
return value;
},
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
},{
id : 'carStatus',
header : "车况",
dataIndex : 'carStatus',
width : 120,
align : 'center',
sortable : false,
renderer:format_carStatus,
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}, {
id : 'carType',
header : "车辆分类",
dataIndex : 'carType',
width : 120,
align : 'center',
sortable : false,
renderer:format_carType,
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}, {
id : 'useType',
header : "用途分类",
dataIndex : 'useType',
width : 120,
align : 'center',
sortable : false,
renderer:format_useType,
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}, {
id : 'inputUnit',
header : "录入单位名称",
dataIndex : 'inputUnit',
width : 260,
align : 'center',
sortable : false,
renderer:function(value){
if(value==null){
return '';
}
return value;
},
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}, {
id : 'inputMan',
header : "录入人姓名",
dataIndex : 'inputMan',
width : 120,
align : 'center',
sortable : false,
renderer:function(value){
if(value==null){
return '';
}
return value;
},
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}, {
id : 'inputDate',
header : "录入日期",
dataIndex : 'inputDate',
width : 120,
align : 'center',
sortable : false,
format:'Y-m-d',
renderer:function(value){
if(value==null){
return '';
}
return value;
},
css : 'white-space:normal;border:#eee solid;border-width:0 0 0 1;'
}]);
var pagingToolbar = new Ext.PagingToolbar({
pageSize : pageSize,
store : gridStore,
displayInfo : true,
items : ['-', '每页显示行数', new Ext.form.ComboBox({
store : new Ext.data.SimpleStore({
fields : ['abbr', 'state'],
data : [[20, 20], [25, 25], [30, 30],
[35, 35], [40, 40], [45, 45],
[50, 50]]
}),
width : 50,
displayField : 'state',
typeAhead : true,
editable : false,
mode : 'local',
value : pageSize,
triggerAction : 'all',
selectOnFocus : true,
listeners : {
change : {
fn : function(box, newValue, oldValue) {
changePageSize(newValue);
}
},
select : {
fn : function(combo, value) {
changePageSize(combo.getValue());
}
}
}
})]
});
var grid = new Ext.ux.grid.SSNJLOCKPAGEGrid({
id : 'grid',
layout : 'fit',
store : gridStore,
loadMask: {msg:'正在加载数据,请稍候……'},
colModel:cm,
sm: sm,
height:gridHeight,
viewConfig: {
enableRowBody:false
},
bodyStyle:'width:100%;',
frame:true,
stripeRows:true,
tbar:[seeButton,'-',addButton, '-', modButton, '-', delButton],
bbar:pagingToolbar
});
grid.render(Ext.get('grid-div'));
gridStore.load({
params : {
start : 0,
limit : pageSize
}
});
由于我们的页面基本上都是由Ext编写的,所以在这里说明一下。var gridStore的值其实是从jsonStringPage.jsp中读取的。也许有很多人奇怪为什么不是从xml中读取啊,哈哈,我也不是很清楚啦,
当然我也会请教高手的。反正这么做就对那