Problemas al mostrar un Widget personalizado con una tabla, no muestra valores

1
0
-1

Hola a todos,
Soy nuevo en Bonita 7.2, y estoy topando con problemas para mostrar los valores obtenidos en un Widget de tabla personalizada desde base de datos MySql, cualquier ayuda será agradecida.

La primera prueba que hice y que funcionó correctamente fue mostrar los datos en un Table Widget convencional de UIDesigner. Pero después me di cuenta que necesitaba una tabla personalizada, porque necesito poder seleccionar una fila de la tabla y en función de la selección mostrar en un panel situado debajo de la tabla más detalles en profundidad sobre la fila seleccionada. Y esto no lo soportan las tablas convencionales de ui designer.
Mi duda principal es si tengo que usar una collection o un tipo text para pasarle al widget personalizado la lista de objetos a mostrar en la tabla. He probado de las dos formas y no funciona correctamente. Supongo que tengo que almacenar en el JSON la clave de la columna a mostrar y el valor a mostrar así para todos los elementos.

Template o plantilla, código del custom widget:

<table data-toggle="table" calss="table">
     <tbody>
        <tr>
           <th>Id</th>
           <th>Reporting Entity</th>
           <th>Reporting entity name</th>
           <th>Departament</th>
           <th>Job Profile</th>
           <th>Reporters code</th>
           <th>First Name</th>
        </tr>
        <tr ng-repeat="model in datosTabla">
             <!-- <td>
                 <input type="radio" name="groupName" ng-model="model.selected" />
             </td> -->
             <td>{{ model.id }}</td>
             <td>{{ model.entidad_reportante }}</td>
             <td>{{ model.nombre_entidad_reportante }}</td>
             <td>{{ model.departamento }}</td>
             <td>{{ model.perfil_reportante }}</td>
             <td>{{ model.codigo_reportante }}</td>
             <td>{{ model.nombre }}</td>
         </tr>
     </tbody>
</table>

Muy simple el código del controller

function ($scope) {  
   
      $scope.datosTabla = $scope.properties.datosTablaLocal;
    }

La propiedad: $scope.properties.datosTablaLocal; es una collection.
También pienso que el problema puede estar en el Groovy script asociado con el conector de base de datos. He probado dos códigos diferentes con un List de list, y con un list de JSBONBuilder, y no va
Este es el código del GroovyScript:

                List milista1 = new ArrayList();
                //* mcampo1 y mcampo2 son los nombres que yo utilice para este ejemplo,
                // cualquier cantidad de campos
       
                def builder = new JsonBuilder();
       
                while(resultset.next()){
       
                // en va el numero de la columna o registro de nuestra consulta, que tiene el valor
                // que queremos poner en este campo de milista, igual con el 2
       
                        def lin1 = builder {
                          id resultset.getObject(1).toString()
                          entidad_reportante resultset.getObject(2).toString()
                          nombre_entidad_reportante resultset.getObject(3).toString()
                          departamento resultset.getObject(4).toString()
                          perfil_reportante resultset.getObject(5).toString()
                          codigo_reportante resultset.getObject(6).toString();
                          nombre resultset.getObject(7).toString();
                         }
                        milista1.add(lin1);            
                }
                loggerJava.info("Saliendo list reportes")
                return milista1;

Otro Groovy script que he probado:

        final List<List<Object >> resultTable = new ArrayList<List<Object>>();
        int maxColumn = resultset.getMetaData().getColumnCount()+1
        while(resultset.next())
        {
                final List<Object> row = new ArrayList<Object>()
                for(int colIndex = 1; colIndex < maxColumn ; colIndex++)
                {
                        row.add(resultset.getObject(colIndex))
                }
                resultTable.add(Collections.unmodifiableList(row));
        }
   loggerJava.info("Sale list reportes");
   return resultTable;

JSON que muestro en el formulario en una etiqueta de texto, este es el JSON del primer groovy script:

[
  {
    "id": "1",
    "entidad_reportante": "Spain Other Aircraft Ground Handling Organization",
    "nombre_entidad_reportante": "Atlantica",
    "departamento": "Operaciones Vuelo",
    "perfil_reportante": "Tripulante de Vuelo",
    "codigo_reportante": "Y15678909",
    "nombre": "Marta"
  },
  {
    "id": "2",
    "entidad_reportante": "Spain Other Aircraft Maintenance organization",
    "nombre_entidad_reportante": "Bintertechnic",
    "departamento": "Control Operacional",
    "perfil_reportante": "Officer",
    "codigo_reportante": "X34538909",
    "nombre": "Carlos"
  }
]

Json resultante del segundo groovy script:

[
    [
      1,
      "Spain Other Aircraft Ground Handling Organization",
      "Atlantica",
      "Operaciones Vuelo",
      "Tripulante de Vuelo",
      "Y15678909",
      "Marta",
      "López Sánches",
      "mlopez@naysa.es",
      1,
      111,
      1,
      "11",
      1467846000000,
      "12:00",
      "2016-07-07 00:00:00",
      "Narrativa",
      "es",
      "adjuntos",
      "tipo reporte",
      1467846000000,
      "C78715649",
      1467846000000,
      "G45678098",
      1467846000000,
      "Rapida",
      1
    ],
    [
      2,
      "Spain Other Aircraft Maintenance organization",
      "Bintertechnic",
      "Control Operacional",
      "Officer",
      "X34538909",
      "Carlos",
      "Cardenas Bermudez",
      "ccardenas@naysa.es",
      1,
      111,
      1,
      "11",
      1467846000000,
      "12:00",
      "2016-07-07 00:00:00",
      "Narrativa",
      "es",
      "adjuntos",
      "tipo reporte",
      1467846000000,
      "C78715649",
      1467846000000,
      "G45678098",
      1467846000000,
      "Rapida",
      1
    ]
]

El error que se muestra en el log del navegador está relacionado con el JSON:

SyntaxError: Unexpected end of JSON input
    at Object.parse (native)
    at tc (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:14:245)
    at bc (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:77:7)
    at http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:77:369
    at q (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:7:322)
    at dd (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:77:351)
    at c (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:78:495)
    at http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:112:182
    at m.$eval (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:126:250)
    at m.$digest (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:123:365)

Otro error que se muestra en el log del navegador:

vendor.min.js:102 the pbInput property named "value" need to be bound to a variable

Otro error que se muestra en el log del navegador:

vendor.min.js:102 Error: [$parse:syntax] http://errors.angularjs.org/1.3.18/$parse/syntax?p0=panel&p1=is%20an%20unexpected%20token&p2=7&p3=panel%20panel-default&p4=panel-default
    at Error (native)
    at http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:6:417
    at lb.throwError (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:192:113)
    at lb.parse (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:190:406)
    at http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/vendor.min.js:110:366
    at new n (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/runtime.min.js:1:10017)
    at Object.create (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/runtime.min.js:1:8209)
    at http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/runtime.min.js:1:12401
    at Array.forEach (native)
    at Object.create (http://localhost:8080/bonita/portal/resource/taskInstance/RegistroSimpleNotificacion/5.4/RevisarCamposNotificacion/content/js/runtime.min.js:1:12373) <div pb-property-values="59c870ab-b357-45f3-b176-25f60338efb0" class="ng-scope">

Este es el error que se muestra en el log de bontia:

GRAVE: An exception occured writing the response entity
com.fasterxml.jackson.databind.JsonMappingException: [no message for java.lang.NullPointerException]
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:261)
        at com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:802)
        at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:642)
        at org.restlet.ext.jackson.JacksonRepresentation.write(JacksonRepresentation.java:464)
        at org.restlet.engine.adapter.ServerCall.writeResponseBody(ServerCall.java:510)
        at org.restlet.engine.adapter.ServerCall.sendResponse(ServerCall.java:454)
        at org.restlet.ext.servlet.internal.ServletCall.sendResponse(ServletCall.java:421)
        at org.restlet.engine.adapter.ServerAdapter.commit(ServerAdapter.java:187)
        at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:144)
        at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1117)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
        at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
        at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
        at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.bonitasoft.console.common.server.login.filter.AbstractAuthorizationFilter.doFilter(AbstractAuthorizationFilter.java:60)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:747)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:410)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:337)
        at org.bonitasoft.console.common.server.page.PageServlet.service(PageServlet.java:77)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
        at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
        at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
        at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.bonitasoft.console.common.server.login.filter.AuthenticationFilter.isAuthorized(AuthenticationFilter.java:152)
        at org.bonitasoft.console.common.server.login.filter.AuthenticationFilter.doAuthenticationFiltering(AuthenticationFilter.java:134)
        at org.bonitasoft.console.common.server.login.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.bonitasoft.console.security.SessionFixationValve.invoke(SessionFixationValve.java:77)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
        at org.bonitasoft.web.rest.server.utils.JacksonSerializerHelper.writeValueAndStringValue(JacksonSerializerHelper.java:48)
        at org.bonitasoft.web.rest.server.utils.DataInstanceSerializer.serialize(DataInstanceSerializer.java:43)
        at org.bonitasoft.web.rest.server.utils.DataInstanceSerializer.serialize(DataInstanceSerializer.java:27)
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:250)
        ... 61 more

Por favor cualquier ayuda será agradecida, llevo un par de día atascado en esto, y el problemas es sencillo, simplemente estaré pasando mal algún valor.
Muy agradecido,
Héctor

1 answer

1
0
-1

Comments

Submitted by hectorta on Wed, 07/20/2016 - 16:41
Submitted by tobias.raabe on Wed, 12/07/2016 - 13:48

Thanks. Great answer!

Notifications