2015-07-24 3 views
0

Я работаю над проектом с пользовательским интерфейсом Kendo HTML5 на стороне клиента и на стороне сервера с Java, WildFly 8.2.0.Final и RESTEasy.Kendo grid не показывает данные с 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> 

Когда я запускаю клиентский код, появляются только заголовки сетки кендо, но нет данных. Есть идеи? или я делаю что-то неправильно?

ответ

0

Поскольку вы используете серверный пейджинг, вам необходимо определить в общей сумме схемы и отображения данных из службы. Это структура, ожидаемая, когда серверный пейджинг установлен в значение true. { Всего: 30, данные: [массив данных]

}

+0

В модели моей схемы мне нужно поставить все поля результата JSON от сервера? – Alex

+0

попробуйте настроить сортировку пейджинга сервера на false, если для них установлено значение true, тогда api ожидает немного другую структуру данных –

Смежные вопросы