Java 使用Dojo数据网格在JSP页面上显示数据

Java 使用Dojo数据网格在JSP页面上显示数据,java,json,jsp,datagrid,dojo,Java,Json,Jsp,Datagrid,Dojo,我已经编写了这个返回Json字符串的代码,它包含一组值(名称)。现在,我想使用Dojo数据网格在jsp页面上显示这些值。我不知道如何使用这个返回的Json字符串作为Dojo网格的数据。以及如何格式化表结构。另外,我希望当我单击表中的某一行时(在本例中,根据我的查询,该行只包含一列-员工姓名),会打开一个新窗口(可能是一个新的JSP页面)。怎么做?请帮我查一下密码。谢谢 PopulateTextbox.java package MyPackage; import java.sql.Connect

我已经编写了这个返回Json字符串的代码,它包含一组值(名称)。现在,我想使用Dojo数据网格在jsp页面上显示这些值。我不知道如何使用这个返回的Json字符串作为Dojo网格的数据。以及如何格式化表结构。另外,我希望当我单击表中的某一行时(在本例中,根据我的查询,该行只包含一列-员工姓名),会打开一个新窗口(可能是一个新的JSP页面)。怎么做?请帮我查一下密码。谢谢

PopulateTextbox.java

package MyPackage;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

public class PopulateTextbox {

    Gson gson = new Gson();
    String temp;
    List <String>rowValues = new ArrayList<String>();
    String[] contactListNames;
    Connection con=null;
    Statement st=null;
    ResultSet rs=null;


    public String method(){


        try{


        String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        Class.forName(driver);

        String db = "jdbc:odbc:Practice_Database";
        con = DriverManager.getConnection(db,"","");

        st = con.createStatement();
        String sql = "SELECT Emp_Name FROM EmployeeSearch";
        rs = st.executeQuery(sql);

        while(rs.next()){

            rowValues.add(rs.getString("Emp_Name"));
        }
        contactListNames = (String[]) rowValues.toArray(new String[rowValues.size()]);
        temp = gson.toJson(contactListNames);

    }catch(Exception e){System.out.println(e);}
    /*finally{
        try {
                if(con!=null)con.close();
            } catch (SQLException e) {

                e.printStackTrace();
            }
        try {
            if(rs!=null)rs.close();
        } catch (SQLException e) {

            e.printStackTrace();
        }try {
            if(st!=null)st.close();

        } catch (SQLException e) {

            e.printStackTrace();
        }


    }*/
        return temp;

    }
}
package-MyPackage;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入java.util.ArrayList;
导入java.util.List;
导入com.google.gson.gson;
公共类PopulateTextbox{
Gson Gson=新的Gson();
字符串温度;
List rowValues=new ArrayList();
字符串[]contactListNames;
连接con=null;
语句st=null;
结果集rs=null;
公共字符串方法(){
试一试{
String driver=“sun.jdbc.odbc.JdbcOdbcDriver”;
Class.forName(驱动程序);
String db=“jdbc:odbc:Practice\u数据库”;
con=DriverManager.getConnection(db,“,”);
st=con.createStatement();
String sql=“从EmployeeSearch中选择Emp_名称”;
rs=st.executeQuery(sql);
while(rs.next()){
添加(rs.getString(“Emp_Name”);
}
contactListNames=(字符串[])rowValues.toArray(新字符串[rowValues.size());
temp=gson.toJson(contactListNames);
}catch(异常e){System.out.println(e);}
/*最后{
试一试{
如果(con!=null)con.close();
}捕获(SQLE异常){
e、 printStackTrace();
}
试一试{
如果(rs!=null)rs.close();
}捕获(SQLE异常){
e、 printStackTrace();
}试一试{
如果(st!=null)st.close();
}捕获(SQLE异常){
e、 printStackTrace();
}
}*/
返回温度;
}
}

dojox.grid.DataGrid使用数据存储作为其源。dojo.data.ItemFileReadStore可以接受作为数据的json对象

var grid = ...
var store = new dojo.data.ItemFileReadStore({
    data: YOUR_JSON_HERE
});
grid.setStore(store);
存储用来初始化自身的json如下所示

{
    identifier: 'id',
    items: [
        { id: 0, name: 'x' },
        { id: 1, name: 'y' }
    ]
}
因此,您需要修改java代码以生成特定的json格式。还请注意,每个商品都有一个id,该id在商店中的所有商品中都必须是唯一的

DataGrid具有onRowClick和onRowDblClick事件,用户选择它时,您可以将它们绑定到其中以执行所需的操作