Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JSON数据发送到Dojo数据网格?_Java_Json_Datagrid_Dojo - Fatal编程技术网

Java 如何将JSON数据发送到Dojo数据网格?

Java 如何将JSON数据发送到Dojo数据网格?,java,json,datagrid,dojo,Java,Json,Datagrid,Dojo,我编写了一个带有数据库连接的JSP页面,从数据库获取数据并以JSON格式打印 现在我希望JSON数据被发送到Dojo数据网格 这是我的JSP代码 <html> <head> <script type="text/javascript"> dojo.require("dojox.data.QueryReadStore"); dojo.require("dojox.grid._Ch

我编写了一个带有数据库连接的JSP页面,从数据库获取数据并以JSON格式打印

现在我希望JSON数据被发送到Dojo数据网格

这是我的JSP代码

    <html>
    <head>  
        <script type="text/javascript">
            dojo.require("dojox.data.QueryReadStore");
            dojo.require("dojox.grid._CheckBoxSelector");
            dojo.require("dojo.data.ObjectStore");
            dojo.require("dojo.parser");
            dojo.require("dojox.grid.DataGrid");
            dojo.require("dijit/form/Button");
            dojo.require("dojox/grid/DataGrid");
            dojo.require("dojo/data/ItemFileReadStore");
            dojo.ready(function(){
                mystore=new dojox.data.QueryReadStore({url:"/DojoProject/test"});
                grid = new dojox.grid.DataGrid({
                        store: mystore,
                        structure: [
                            {type: "dojox.grid._CheckBoxSelector",  editable: true},
                           [{name:"id", field:"ID", width: "200px",editable: true},
                            {name:"name", field:"name", width: "200px",editable: true},                         
                            {name:"Result", field:"Result", width: "200px"}]
                        ]}, dojo.byId("gridContainer"));                    
               grid.startup();
            });
        </script>
    <%
        JSONObject responseObj = new JSONObject();
        List<JSONObject> data = new LinkedList<JSONObject>();
        try {
            String dbms = "SQL SERVER"; 
            String serverName = "";
            String portNumber = "1106";
            String userName = "";
            String upassword = "";
            String databaseName = "";
            int datacount = 0;

            //String connectionURL = "jdbc:" + dbms + "://" + sN
            //      + ":" + PN + "/" + databaseN;
            Connection conn = null;
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            conn = DriverManager.getConnection("");
            System.out.println("connection::" + conn);

            String strQuery = "select * from sample";
            System.out.println(strQuery);
            PreparedStatement st = conn.prepareStatement(strQuery);
            ResultSet rs = st.executeQuery();
            while(rs.next()) {
                datacount++;    
                JSONObject object = new JSONObject(); 
                object.put("s1",(String.valueOf(datacount)));
                object.put("ID",rs.getString(1));
                object.put("Name",rs.getString(2));
                System.out.println("ID&name&::"+rs.getString(1) +","+rs.getString(2));
            } 
            responseObj.put("data",data);    
            PrintWriter writer = response.getWriter();                           System.out.println({\"identifier\":\"data\",\"label\":\"data\",\"items\":"+responseObj+"}");       
            writer.write(" "+responseObj+"");        
            writer.flush();
            writer.close();    
        } catch (Exception e) {
            System.out.println(e);  
        }  %>  

    <head>
    <body class="claro">
        <div id="some">
            <div id="gridContainer" style="width: 100%; height: 200px;">
            <button data-dojo-type="dijit/form/Button" type="submit" name="submitButton" value="Submit">Submit</button> </div>   
        </div>
    </body>
</html>

QueryReadStore需要来自JSP的特定JSON格式的数据,否则它不知道如何处理它

查看QueryReadStore后端的最后一行:

print '/*'.json_encode(array('numRows'=>$numRows, 'items'=>$ret, 'identity'=>'id')).'*/';
它与您的格式没有太大区别,但您可以看到它需要3个特定的键:numRows、items和identity。你只有一个:数据。因此,请尝试更改JSP以输出如下内容:

{"numRows":42, "identity":"id", "items": [{"sl":"1","id":"1","name":"shivasrinat"}] }

numRows
属性应该是与查询匹配的可用项目总数(因为有时您只想检索少量,而不是整个数据库)。

谢谢。但是我需要这种json格式,需要存储dojo datagrid。
{"numRows":42, "identity":"id", "items": [{"sl":"1","id":"1","name":"shivasrinat"}] }