极度郁闷后台获取不到start和limit,前台配置了store.load...
|
demo_3312
2008-05-30
通过节点的 href:'documentManagement/locator.jsp' 把l locator.jsp显示在TablePanle中,也就是点左边Tree,右边显示网页
locaotr.jsp的代码:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>locator.jsp</title>
<link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" /><!-- 样式文件 -->
<script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script><!-- 框架基础库 -->
<script type="text/javascript" src="../extjs/ext-all.js"></script><!--EXT核心库 -->
<script type="text/javascript" src="../extjs/ext-lang-zh_CN.js"></script>
<script type="text/javascript">
Ext.onReady(function(){
Ext.lib.Ajax.defaultPostHeader += '; charset=utf-8';//解决乱码
Ext.QuickTips.init();//信息提示,包括button的和验证的
var store = new Ext.data.Store({ //通过它我们可以把任何格式的数据转化成grid可以使用的形式
proxy: new Ext.data.HttpProxy({
url:'locator.do?method=initLocator' ,
scripts:true
}),
reader: new Ext.data.JsonReader({
totalProperty: 'results',
root: 'root',
fields: [
{name:'locatorid', mapping:'locatorid'},
{name:'lname', mapping:'locatorid'},
{name:'shortname', mapping:'lname'},
{name:'x', mapping:'x'},
{name:'y', mapping:'y'},
{name:'regdate', mapping:'regdate'},
{name:'mapid', mapping:'mapid'},
{name:'state', mapping:'state'},
{name:'ground', mapping:'ground'}
]
})
});
var sm = new Ext.grid.CheckboxSelectionModel();//checkbox
var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),//显示行号
sm,
{header:'定位器号',dataIndex:'locatorid',width:100,sortable:true },
{header:'简称',dataIndex:'lname',width:100,sortable:true},
{header:'定位器名',dataIndex:'shortname',width:150,sortable:true},
{header:'X坐标',dataIndex:'x',align:'right',width:100,sortable:true},
{header:'Y坐标',dataIndex:'y',width:100,sortable:true},
{header:'注册时间',dataIndex:'regdate',width:150,sortable:true},
{header:'地图号',dataIndex:'mapid',width:100,sortable:true},
{header:'使用状态',dataIndex:'state',width:150,sortable:true},
{header:'设备性质',dataIndex:'ground',width:150,sortable:true}
]);
var grid = new Ext.grid.GridPanel({
height: 600,//不写的话,页面不报错误,也不显示数据
store: store,
cm: cm,
sm: sm,
autoEncode: true,
bbar: new Ext.PagingToolbar({
pageSize: 20, //每页显示几条数据
store: store,
displayInfo: true,
displayMsg: '正在显示第 {0} 条至第 {1} 条数据,共 {2} 条数据',
emptyMsg: "当前没有可以显示的数据"
})
});
grid.render('grid-div');//让grid开始渲染
store.load({params:{start:0, limit:20}});
});
</script>
</head>
<body>
<div id="grid-div"></div>
<div id="window_win"></div>
</body>
</html:html>
locator.do?method=initLocato 代码:
public ActionForward initLocator(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
System.out.println("Hello ...");
LocatorVO vo=null;
LocatorBO bo=new LocatorBO();
response.setContentType("text/json; charset=utf-8");//防止乱码
String start = request.getParameter("start");
System.out.println(start);
String limit = request.getParameter("limit");
System.out.println(limit);
StringBuffer sb=new StringBuffer();
try{
int index = Integer.parseInt(start);
int pageSize = Integer.parseInt(limit);
List list=bo.locatorResults();
sb.append("{results:"+list.size()+",root:[");
for(int i=index;i<pageSize+index;i++){
vo=(LocatorVO)list.get(i);
sb.append("{locatorid:"+vo.getLocatorid()+",lname:'"+vo.getLname()+"',shortname:'"+vo.getShortname()+"',x:'"+vo.getX());
sb.append("',y:'"+vo.getY()+"',regdate:'"+vo.getRegdate()+"',mapid:'"+vo.getMapid()+"',state:'"+vo.getState()+"',ground:'"+vo.getGround()+"'}");
if(i !=pageSize+index-1){
sb.append(",");
}
}
sb.append("]}");
System.out.println(sb.toString());
response.getWriter().write(sb.toString());
}catch(Exception e){
log.error("==获取定位器信息并处理成Json错误==",e);
}
return null;
}
在页面上显示的时候,只能表头和分页标签的左边部分 分析: System.out.println(start); System.out.println(limit); 因为start和limit都为null,所以不进入for循环,也就不能生成json格式的的字符串,所以 页面上不能显示数据,请问这么解决? |
|
|
jianfeng008cn
2008-05-31
没遇到过哦 肯定是没发出去啦
|
|
|
demo_3312
2008-05-31
这样的问题,还真是不知道这么调试
郁闷 |
|
|
sunxing007
2008-06-02
我没有碰到这个问题,看我的测试代码。是在Spring框架下的。测试顺利
不过我在上面加了一个带搜索的panel,可以忽略它。但愿对你解决问题有帮助 Ext.onReady(function(){
Ext.QuickTips.init();
var ds = new Ext.data.Store({
proxy : new Ext.data.HttpProxy( {url:'<%=request.getContextPath()%>/extjs.htm'} ),
//sortInfo:{field: 'customerid', direction: "ASC"},
reader : new Ext.data.JsonReader({
root:'root',
totalProperty:'totalCount',
id: 'OrderID'
},
[
{name : 'OrderID',mapping: 'OrderID'},
//we can ignore some columns that we don't need it.
//{name : 'CustomerID',mapping: 'CustomerID'},
{name : 'OrderDate',mapping: 'OrderDate'},
{name : 'Freight',mapping: 'Freight'},
{name : 'ShipRegion',mapping: 'ShipRegion'}
]
),
// when open remoteSort, the sort function will implement at server .
remoteSort:false
});
var fm = Ext.form;
var colModel = new Ext.grid.ColumnModel([
{id:'OrderID',header:'OrderID',sortable: true, dataIndex: 'OrderID'},
//{header : 'CustomerID',sortable: true, dataIndex: 'CustomerID'},
{header : 'OrderDate',sortable: true,dataIndex:'OrderDate'},
{header : 'Freight',sortable: true, dataIndex: 'Freight'},
{header : 'ShipRegion',sortable: true, dataIndex: 'ShipRegion'}
]);
var s_panel = new Ext.FormPanel({
baseCls: 'x-plain',
defaults: {width: 150},
defaultType: 'textfield',
height: 18,
items: [{
fieldLabel: 'Search',
id:'title',
name: 'title'
}]
});
var grid = new Ext.grid.GridPanel({
el:'MyPageGrid',
store: ds,
cm: colModel,
autoExpandColumn: 'OrderID',
renderTo: document.body,
height:350,
width:600,
title:'Array Grid',
loadMask: {msg:'Data loading,please wait......'},
tbar:[
s_panel,
{
text: 'Go',
pressed: false,
handler: function(){
ds.load({
params: {start: 10, limit: 20, title: Ext.get('title').dom.value}
});
}
}
],
bbar: new Ext.PagingToolbar({
pageSize: 20,
store: ds,
displayInfo: true,
displayMsg: 'current: {0}-{1}records. There are {2} records',
emptyMsg: "No record"
}),
viewConfig: {forceFit:true},
sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
draggable: {
//Config option of Ext.Panel.DD class.
//It's a floating Panel, so do not show a placeholder proxy in the original position.
insertProxy: false,
// Called for each mousemove event while dragging the DD object.
onDrag : function(e){
var pel = this.proxy.getEl();
this.x = pel.getLeft(true);
this.y = pel.getTop(true);
var s = this.panel.getEl().shadow;
if (s) {
s.realign(this.x, this.y, pel.getWidth(), pel.getHeight());
}
},
endDrag: function(e){
this.panel.setPosition(this.x, this.y);
}
},
enableDragDrop: true,
frame: true,
stripeRows: true,
ddText: 'You select {0} row(s)',
buttons: [{text:'Save'},{text:'Cancel'}],
buttonAlign:'center'
});
grid.render();
ds.load({params:{start:0,limit:20}});
grid.getSelectionModel().selectFirstRow();
});
上面 extjs.htm 是在spring配置文件中定义的bean,对应下面的Controller. 后台Controller:继承自AbstractController, 你可以用Map map = request.getParameterMap();debug去看看到底传进来的是一些什么参数. public class Extjs extends AbstractController
{
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception
{
//You can get the parameters map to see the parameters that passed from Ext page.
//Map map = request.getParameterMap();
int totalCount = 100;
String _start = request.getParameter("start");
String _limit = request.getParameter("limit");
String sort = request.getParameter("sort");//get the sort colume name.
String dir = request.getParameter("dir"); //the direct, value: DESC/ASC
int start = Integer.parseInt(_start);
int limit = Integer.parseInt(_limit);
System.out.println("stsrt:" + _start +"\n" + "limit:" + _limit);
StringBuffer sb = new StringBuffer();
sb.append("[");
for(int i=start;i<start+limit;i++){
sb.append("{OrderID:'orderid" + i)
.append("',CustomerID:'customerid" + i)
.append("',OrderDate:'2008-08-08")
.append("',Freight:'freight" + i)
.append("',ShipRegion:'shipregion" + i)
.append("'}");
if(i!=start+limit-1){
sb.append(",");
}
}
sb.append("]");
String temp = "{totalCount:"+totalCount+",root:" + sb.toString() + "}";
response.setContentType("text/json");
response.getWriter().println(temp);
response.getWriter().flush();
return null;
}
}
|
|
|
demo_3312
2008-06-05
谢谢。。。。
|

