<script type="text/javascript">
Ext.onReady(function(){
var ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'/LookServlet'}),
reader: new Ext.data.JsonReader({
totalProperty:'totalProperty',
root:'root'},
[
{name:'company'},
{name:'price'},
{name:'change'},
{name:'change_'},
{name:'lastupdated'}
])
});
var cm = new Ext.grid.ColumnModel([
{header:"company", dataIndex:"company",sortable:true},
{header:"price" ,dataIndex:"price",sortable:true},
{header:"change",dataIndex:"change",renderer:function change(val){
if(val > 0){
return '<span style="color:green;">' + val + '</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '</span>';
}
return val;
} ,sortable:true},
{header:"change_" ,dataIndex:"change_" ,renderer:function pctChange(val){
if(val > 0){
return '<span style="color:green;">' + val + '%</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '%</span>';
}
return val;
},sortable:true},
{header:"lastupdated" ,dataIndex:"lastupdated",sortable:true}
]);
var grid = new Ext.grid.GridPanel({
el: 'grid',
ds:ds,
cm:cm
});
ds.load();
});
</script>
不知道什么问题, 不执行servlet中的内容.servlet中只是把查询数据库中信息 想放到gridPanel中显示 .也没找到什么原因,不知是那出现的问题 .请教!
Ext.onReady(function(){
var ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'/LookServlet'}),
reader: new Ext.data.JsonReader({
totalProperty:'totalProperty',
root:'root'},
[
{name:'company'},
{name:'price'},
{name:'change'},
{name:'change_'},
{name:'lastupdated'}
])
});
var cm = new Ext.grid.ColumnModel([
{header:"company", dataIndex:"company",sortable:true},
{header:"price" ,dataIndex:"price",sortable:true},
{header:"change",dataIndex:"change",renderer:function change(val){
if(val > 0){
return '<span style="color:green;">' + val + '</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '</span>';
}
return val;
} ,sortable:true},
{header:"change_" ,dataIndex:"change_" ,renderer:function pctChange(val){
if(val > 0){
return '<span style="color:green;">' + val + '%</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '%</span>';
}
return val;
},sortable:true},
{header:"lastupdated" ,dataIndex:"lastupdated",sortable:true}
]);
var grid = new Ext.grid.GridPanel({
el: 'grid',
ds:ds,
cm:cm
});
ds.load();
});
</script>
不知道什么问题, 不执行servlet中的内容.servlet中只是把查询数据库中信息 想放到gridPanel中显示 .也没找到什么原因,不知是那出现的问题 .请教!
解决方案 »
- onload="this."
- 文本框获取焦点时,直接点提交,如何跳过onblur,直接onsubmit?
- js做热点知道得请给我帮助
- tableobj 如何使用
- 请问大哥,在javascript中怎么能实现向vb中的commondialog的功能,为了采集一个路径
- 关于表单的问题,在线等
- JS中的alert()方法好象只在浏览器窗口中出现,如果IE窗口是打开的,现在在其他应用程序中工作(比如word)时,能否让显示器出现alert()
- 如何在CSS里面把所有(多个)<input>属性设为只读,?应该怎么来写,多谢了!
- 还是关于下拉菜单
- button onclick无法跳转
- 想学好Javascript的必看!
- fckeditor中输入url自动转超链接问题
1.proxy: new Ext.data.HttpProxy({url:'/LookServlet'}) 这里的url相对地址要引用正确
2.由于你ds的reader用的是JsonReader,所以servlet必须返回JSON格式的数据
这个可以先自己手写一段JSON格式的数据返回,如果成功的话,再换成代码查询生成
3.一般数据后台动态生成时,当数据量过多时,都会分页显示,所以你的ds.load()也要考虑带参数start和limit
4.最后你的grid没有调用render()方法,也就是在load之后,应该再加一句:grid.render();
Ext这个框架还是不错的,就是出点问题不容易找出来,要花点时间研究
最后,给你再提点建议,多看API,EXT的API还是不错的
出现了 this.el.dom 为空或不是对象
感谢楼上提的建议 ,这块调试好了 我会加上分页的.
你的grid有设置 el : 'grid',
那你的HTML页面<body> </body>标记中,有没有<div id='grid'></div>呢?
如果没有的话,加上应该就没什么问题了
我的servlet中这么写可以吗 .String Joson = "{totalProperty:30,root:[";
while (rs.next()) { String company = rs.getString("company");
Float price = rs.getFloat("price");
Float change = rs.getFloat("change");
Float change_ = rs.getFloat("%change");
String lastupdated = rs.getString("lastupdated");
Joson += "{company:'" + company + "'price:" + price
+ "change:" + change + "%change:" + change_
+ "lastUpdated:'" + lastupdated + "'}";
Joson += ",";
System.out.println("Servlet" + company);
}
Joson += "]}";
response.getWriter().write(Joson);
String Joson = "{totalProperty:30,root:[";
while (rs.next()) { String company = rs.getString("company");
Float price = rs.getFloat("price");
Float change = rs.getFloat("change");
Float change_ = rs.getFloat("%change");
String lastupdated = rs.getString("lastupdated");
Joson += "{company:'" + company + "',price:" + price
+ ",change:" + change + ",%change:" + change_
+ ",lastUpdated:'" + lastupdated + "'}";
//最后一条记录是不需要加','的,所以要注意区分判断
Joson += ",";
//这句话没啥用吧?
System.out.println("Servlet" + company);
}
Joson += "]}";
response.getWriter().write(Joson);
最后,如果你的grid没显示内容,建议直接访问servlet,看看输出的是否是JSON格式
还有就是要设置输出的contentType="text/html;charset=gb2312" 或者 "text/plain;charset=gb2312"
总之就是要细心,多测试一下
下面 我们输出控制台的Joson 应该没问题啊.
{totalProperty:50,root:[{company:'3mCo', price:71.72 , change:0.02 , %change:0.03 , lastupdated:'09/01/2008'},{company:'American Express ', price:52.55 , change:0.01 , %change:0.02 , lastupdated:'09/01/2006'},{company:'AT&T Inc', price:31.16 , change:-0.48 , %change:-1.54 , lastupdated:'09/01/2008'}]}转到页面上 数据不显示在gridpanel上
String Joson = "{totalProperty:50,root:[";
while (rs.next()) {
String company = rs.getString("company");
Float price = rs.getFloat("price");
Float change = rs.getFloat("change");
Float change_ = rs.getFloat("%change");
String lastupdated = rs.getString("lastupdated");
Joson += "{company:'" + company + "', price:" + price
+ " , change:" + change + " , %change:" + change_
+ " , lastupdated:'" + lastupdated + "'}";
if(rs.next()){
Joson += ",";
}
}
Joson += "]}";
System.out.println(Joson);
response.getWriter().write(Joson);
request.getRequestDispatcher("/main.jsp").forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
那有问题呢?
throws ServletException, IOException { Connection conn = null;
try {
DButil db = new DButil();
conn = db.getConnection();
String query = "select * from co_information";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
String Joson = "{totalProperty:50,root:[";
while (rs.next()) {
String company = rs.getString("company");
Float price = rs.getFloat("price");
Float change = rs.getFloat("change");
Float change_ = rs.getFloat("%change");
String lastupdated = rs.getString("lastupdated");
Joson += "{company:'" + company + "', price:" + price
+ " , change:" + change + " , %change:" + change_
+ " , lastupdated:'" + lastupdated + "'}";
if(rs.next()){
Joson += ",";
}
}
Joson += "]}";
System.out.println(Joson);
response.getWriter().write(Joson);
request.getRequestDispatcher("/main.jsp").forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doGet(request, response);
}}
<%@ page contentType="text/html;charset=GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'main.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<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>
<script type="text/javascript">
Ext.onReady(function(){
var ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'/Ext_project/LookServlet'}),
reader: new Ext.data.JsonReader({
totalProperty:'totalProperty',
root:'root'},
[
{name: "company" ,type: String,mapping:0},
{name: "price" , mapping:1},
{name: "change" , mapping:2},
{name: "change_" , mapping:3},
{name: "lastupdated" , type:String,mapping:4}
])
});
var cm = new Ext.grid.ColumnModel([
{header:"company", dataIndex:"company",sortable:true},
{header:"price" ,dataIndex:"price",sortable:true},
{header:"change",dataIndex:"change",renderer:function change(val){
if(val > 0){
return '<span style="color:green;">' + val + '</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '</span>';
}
return val;
} ,sortable:true},
{header:"%change" ,dataIndex:"%change" ,renderer:function pctChange(val){
if(val > 0){
return '<span style="color:green;">' + val + '%</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '%</span>';
}
return val;
},sortable:true},
{header:"lastupdated" ,dataIndex:"lastupdated",sortable:true}
]);
var grid = new Ext.grid.GridPanel({
el: 'grid',
ds:ds,
cm:cm
});
ds.load();
grid.render();
});
</script>
</head>
<body>
<div id='grid' style="height:265px;"> </div>
</body>
</html>
json-lib-2.2-jdk15.jar
这里面有jsonArray 和jsonobject 不知道这个包行不行.
下面是代码 :
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { Connection conn = null;
try {
DButil db = new DButil();
conn = db.getConnection();
JSONArray array = new JSONArray(); 说这行有问题
StringBuilder builder = new StringBuilder();
String query = "select * from co_information";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
//String Joson = "{totalProperty:50,root:[";
while (rs.next()) {
JSONObject obj = new JSONObject();
information in = new information();
in.setCompany(rs.getString("company"));
in.setPrice(rs.getFloat("price"));
in.setChange(rs.getFloat("change"));
in.setChange_(rs.getFloat("%change"));
in.setLastupdated(rs.getString("lastupdated"));
obj.put("company", in.getCompany());
obj.put("price", in.getPrice());
obj.put("change", in.getChange());
obj.put("change_", in.getChange_());
obj.put("lastupdated", in.getLastupdated());
array.add(obj);
}
builder.append(array);
System.out.println(builder.toString());
response.getWriter().write(builder.toString());
request.getRequestDispatcher("/main.jsp").forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}bug:- Servlet.service() for servlet LookServlet threw exception
java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1847)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:873)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1326)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at org.jxnh.servlet.LookServlet.doGet(LookServlet.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)到底是代码的事,还是 jar包 不行.请教了! 这点东西整了几天了.
但是应用json-lib 的 JsonObject 和 JsonArray 执行了 怎么把数据显示到页面的gridpanel上啊 代码是这样: Connection conn = null;
try {
DButil db = new DButil();
conn = db.getConnection();
StringBuilder builder = new StringBuilder();
String query = "select * from co_information";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
try {
JSONArray array = new JSONArray();
while (rs.next()) {
JSONObject obj = new JSONObject();
information in = new information();
in.setCompany(rs.getString("company"));
in.setPrice(rs.getFloat("price"));
in.setChange(rs.getFloat("change"));
in.setChange_(rs.getFloat("%change"));
in.setLastupdated(rs.getString("lastupdated"));
obj.put("company", in.getCompany());
obj.put("price", in.getPrice());
obj.put("change", in.getChange());
obj.put("change_", in.getChange_());
obj.put("lastupdated", in.getLastupdated());
array.add(obj);
}
//builder.append(array);
System.out.println(array);
response.getWriter().write(array.toString());
request.getRequestDispatcher("/main.jsp").forward(request, response);
}catch(Exception e){
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doGet(request, response);
}}
页面是:<script type="text/javascript">
Ext.onReady(function(){
var ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'/Ext_project/LookServlet'}),
reader: new Ext.data.JsonReader({
totalProperty:'totalProperty',
root:'root',
id: 'company' },
[
{name: 'company'},
{name: 'price' ,type:'float'},
{name: 'change', type:'float'},
{name: 'change_' ,type:'float'},
{name: 'lastupdated'}
]),
remoteSort: true
});
var cm = new Ext.grid.ColumnModel([
{header:"company", dataIndex:'company',sortable:true},
{header:"price" ,dataIndex:'price',sortable:true},
{header:"change",dataIndex:'change',renderer:function change(val){
if(val > 0){
return '<span style="color:green;">' + val + '</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '</span>';
}
return val;
} ,sortable:true},
{header:"%change" ,dataIndex:'%change' ,renderer:function pctChange(val){
if(val > 0){
return '<span style="color:green;">' + val + '%</span>';
}else if(val < 0){
return '<span style="color:red;">' + val + '%</span>';
}
return val;
},sortable:true},
{header:"lastupdated" ,dataIndex:'lastupdated',sortable:true}
]);
var grid = new Ext.grid.GridPanel({
el: 'grid',
ds:ds,
cm:cm,
width:700,
height:280
});
grid.render();
ds.load();
});
</script>
response.getWriter().write(Joson);
request.getRequestDispatcher("/main.jsp").forward(request, response); 貌似应该设置一下编码吧 System.out.println(Joson);
response.setContext("text/html;charset=GBK");
response.getWriter().write(Joson);
//request.getRequestDispatcher("/main.jsp").forward(request, response);
由于你的main.jsp文件用的是GBK编码的,所以这里输出也用GBK编码,
不过建议统一使用UTF-8编码如果还是不能输出的话,看看后台System.out.println(Joson)的结果,格式是否正确,任何格式错误都可能导致grid显示不出来的。
实在不行加我MSN吧,我周末帮你看看
[email protected]