我正在使用Kendo UI HTML5在客户端和服务器端使用Java,WildFly 8.2.0.Final和RESTEasy进行项目。
我的服务器工作正常,但我会把我的代码放在这里:
import ec.com.decision.consultas.dao.AccesoesFacade;
import javax.ejb.EJB;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/accesos")
public class AccesoServicio {
@EJB
private AccesoesFacade accesoFacade;
@GET
@Path("todos")
@Produces(MediaType.APPLICATION_JSON+ ";charset=utf-8")
public Response obtenerTodos() {
try {
return Response.ok(accesoFacade.findAll()).build();
} catch (Exception e) {
return null;
}
}
}
我也有CORSFilter:
@Provider
public class CORSFilter implements ContainerResponseFilter {
@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext cres) throws IOException {
cres.getHeaders().add("Access-Control-Allow-Origin", "*");
cres.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
cres.getHeaders().add("Access-Control-Allow-Credentials", "true");
cres.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
cres.getHeaders().add("Access-Control-Max-Age", "1209600");
}
}
结果是:
[{
"accesoesID": 1,
"nombreAcceso": "Seguridad",
"controladorAcceso": "S/N",
"accionAcceso": "Index",
"idacceso": null,
"parentAcceso": "_parent",
"fecCreaAcceso": 1323804595183,
"estadoAcceso": true,
"visibleAcceso": true
}, {
"accesoesID": 2,
"nombreAcceso": "Accesos",
"controladorAcceso": "Acceso",
"accionAcceso": "Index",
"idacceso": 1,
"parentAcceso": "_parent",
"fecCreaAcceso": 1323804595183,
"estadoAcceso": true,
"visibleAcceso": true
}, {
"accesoesID": 3,
"nombreAcceso": "Roles",
"controladorAcceso": "Rol",
"accionAcceso": "Index",
"idacceso": 1,
"parentAcceso": "_parent",
"fecCreaAcceso": 1323804595183,
"estadoAcceso": true,
"visibleAcceso": true
}]
这是我的客户端代码:
<!DOCTYPE html>
<html>
<head lang="es">
<meta charset="UTF-8">
<title>Accesos</title>
<link rel="stylesheet" href="estilos/kendo.common.min.css" />
<link rel="stylesheet" href="estilos/kendo.material.min.css" />
<script src="scripts/jquery.min.js"></script>
<script src="scripts/kendo.all.min.js"></script>
</head>
<body>
<div id="ejemplo">
<div id="tbAccesos"></div>
<script>
$(document).ready(function() {
$("#tbAccesos").kendoGrid({
dataSource: {
transport: {
read: {
url: function (data) {
return "http://localhost:8080/Consultas-1.0/rest/accesos/todos";
},
contentType: "application/json; charset=utf-8",
type: 'GET',
dataType: "jsonp"
}
},
schema: {
model: {
id:"accesoesID",
fields: {
accesoesID: { type: "number" },
nombreAcceso: { type: "string" },
controladorAcceso: { type: "string" },
accionAcceso: { type: "string" },
parentAcceso: { type: "string" },
fecCreaAcceso: { type: "date" },
estadoAcceso: { type: "boolean" },
visibleAcceso: { type: "boolean" }
}
}
},
pageSize: 20,
serverPaging: true,
serverFiltering: true,
serverSorting: true
},
height: 550,
groupable: true,
filterable: true,
sortable: true,
pageable: true,
columns: [{
field:"accesoesID",
filterable: false,
hidden: true
},
{
field: "nombreAcceso",
title: "Nombre"
}, {
field: "controladorAcceso",
title: "Controlador"
}, {
field: "accionAcceso",
title: "Accion"
}, {
field: "parentAcceso",
title: "Acceso padre"
}, {
field: "fecCreaAcceso",
title: "Fecha de creación",
format: "{0:MM/dd/yyyy}"
}, {
field: "estadoAcceso",
title: "Estado"
}, {
field: "visibleAcceso",
title: "Visible"
}
]
});
});
</script>
</div>
</body>
</html>
当我运行客户端代码时,只显示kendo网格的标题,但没有数据。有任何想法吗?或者我做错了什么?
答案 0 :(得分:0)
因为您正在使用服务器分页,所以您需要在服务中定义模式总数和数据映射。 这是服务器分页设置为true时预期的结构。 { 总计:30, 数据:[数据数组]
}