环境:extjs+ibatis+java
问题是这样的:
前台用extjs,后台用ibatis获取到数据库的数据,怎么把前台用extjs做的表单展示后台查出来的数据?
希望大牛多多赐教,不甚感激附上代码:
InterfaceDAO.java
package com.ibatis;
import java.util.*;
public interface InterfaceDAO {
public List<Student> queryAllStudent();
}
Student.java
package com.ibatis;
public class Student {
private float forcast_load;
public float getForcast_load() {
return forcast_load;
}
public void setForcast_load(float forcast_load) {
this.forcast_load = forcast_load;
}
@Override
public String toString() {
String content="Forcast_load: "+forcast_load;
return content;
}
}
StudentDAOImpl.java
package com.ibatis;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ibatis.sqlmap.client.SqlMapClient;
public class StudentDAOImpl implements InterfaceDAO {
private static SqlMapClient sqlMapClient=null;
static{
try {
Reader reader=com.ibatis.common.resources.Resources.getResourceAsReader("com/ibatis/SqlMapConfig.xml");
sqlMapClient=com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public List<Student> queryAllStudent() {
List<Student> studentlist=null;
try {
studentlist=sqlMapClient.queryForList("selectallstudent");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return studentlist;
}
public static void main(String[] args) {
Map<String, Object> result = new HashMap<String, Object>();
InterfaceDAO dao=new StudentDAOImpl();

result.put("msg", "aaa");
for(Student student:dao.queryAllStudent()){
System.out.println(student.toString());
} }
}index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>
        <meta http-equiv="Content-Type" content="text/html; charset=gbk">
        <title>03.grid</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>
        <script type="text/javascript">
Ext.onReady(function(){    var sm = new Ext.grid.CheckboxSelectionModel();    var cm = new Ext.grid.ColumnModel([
        new Ext.grid.RowNumberer(),
        sm,
        {header:'编号',dataIndex:'forcast_load'}
    ]);
//下面的这些数据是我静态展示的,想他获取到后台的数据动态展示出来
    var data = [
        ['1'],
        ['2'],
        ['3']
    ];    var store = new Ext.data.Store({
        proxy: new Ext.data.MemoryProxy(data),
        reader: new Ext.data.ArrayReader({}, [
            {name: 'forcast_load'}
        ])    });
    store.load();    var grid = new Ext.grid.GridPanel({
        autoHeight: true,
        renderTo: 'grid',
        store: store,
        cm: cm,
        sm: sm
    });});
        </script>
    </head>
    <body>
        <div id="grid"></div>
    </body>
</html>
extjs数据库ibatisjava

解决方案 »

  1.   

    漏了一个数据库查询的xml文件
    Student.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
       "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap>
        <!-- 把路径简化,也称别名 -->
    <typeAlias alias="Student" type="com.ibatis.Student"/>
    <!-- 开始查询 resultClass的是上面的别名,方便填写-->
    <select id="selectallstudent" resultClass="Student">
    select forcast_load 
    from LUEBA_BLOBAL_LOAD  
    where appraise_load = '5.00'
    </select>
    </sqlMap>
      

  2.   

    楼主我问下你用什么控制器?struts1、2?还是用servlet?
      

  3.   

    这个我不是很清楚,软件我用的是myeclips,后台测试能获取到数据,不知道怎么把前台和后台进行动态连接
      

  4.   

    var store = new Ext.data.Store({
            proxy: {},
            reader: new Ext.data.ArrayReader({}, [
                {name: 'forcast_load'}
            ])
     
        });
    你的数据是store中的proxy从后台拿到的,现在要知道你是用什么去访问后台的,url是什么,同样你还要在后台作相应的一些处理。
      

  5.   

    静态获取换成动态的:
    var gridStore = new Ext.data.Store({
    proxy: new Ext.data.HttpProxy({
    url: ''//请求的url
    }),
    reader: new Ext.data.JsonReader({
    root: 'data',
    totalProperty: 'totalCount',
    idProperty: 'id'
    },[
    {name: 'display1',mapping: 'pro1'},
    {name: 'display2',mapping: 'pro2'},
    ...... ]),
    autoLoad: true
    });可以参考ext包下的实例
      

  6.   

    后台:
    List<beanentity> list= beanservice.querydate(args);
    request.setAttribute("list", list);
    前台:
    <logic:iterate id="item" name="siRtForm" property="list">
      

  7.   

    index.jsp里面的代码是我从extjs教程里面拿下来的一段,还没有去访问后台,我对这一块不熟,希望能给我多一点帮助。
    下面是我主要代码的路径:
      

  8.   

     @SuppressWarnings("unchecked")     
    public ActionForward queryAllStudent(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) 
    {        
     List<Student> studentlist=null;        
     try {        
         studentlist=sqlMapClient.queryForList("selectallstudent");   
          } 
    catch (SQLException e) {  
               // TODO Auto-generated catch block    
             e.printStackTrace();     
        }         return mapping.findForward("studentlist"); 
        } 
      

  9.   

    你没弄过的话建议你去看一下extjs的帮助文档。你写的东西用grid.panel显示出来,自己先看grid里面的demo,能做出显示出来,然后把数据那一块改成从后台获取的。
      

  10.   

    前台改成静态是可以展示的,就缺数据那一块改成从后台获取的了,用了一下yyw6637的代码,ActionForward 报错??
      

  11.   

    额,我那是struts1,你这没用到框架,可以用
    request.getSession().setAttribute(“studentlist",studentlist)
      

  12.   

    首先你得弄明白原理:
    1)后台往前台js传数据的依靠的是ajax方式,就使用javascript中的XMLHttpRequest内置对象,访问位于服务器上的Servlet/JSP。(当然使用Struts2会有点区别,是被filter拦截了,转发给action对象了)
    2)extjs是一个js库,它将XMLHttpRequest访问服务器的逻辑封装了起来,你只要url参数里面填入地址,然后在回调函数处填写返回数据的处理逻辑就可以了。
    3)从服务的Servlet/JSP中向ExtJS中传递数据,一般是使用JSON格式。
    4)将要传递的java数据对象转化为JSON格式,然后使用Servlet/JSP传递给ExtJS。
    上面的几条弄明白了,也就应该能做出来了。
      

  13.   

    经过一段时间的研究,发现如果要连接后台,得用框架进行配置才能访问后台路径,我用的是struts2,现在已经可以访问后台了,谢谢各位