Desarrollo WEB.


Las practicas de programación orientadas a la web son muy cambiantes en el tiempo. Es necesario conocer e implementar tecnologías, conocer lenguajes,integrar comunidades,usar Ides, etc, recientes, para responder al mercado que se acerca.

martes, 21 de enero de 2014

Capturar valor de un campo de búsqueda de una JDatatable

En ocasiones con JSF requerimos enviar valores con javascript de componentes html y pasarlos por parámetros al controlador, logrando así obtener información cargada en variables de sesión o en entidades EJB.

Una de esas ocasiones es cuando teniendo un campo de búsqueda principal de una JDatatable (plugin de jquery), se quiere llevar de él su valor de búsqueda, para enviar a un reporte ireport o a una consulta sql externa, entre otros casos.

Es decir busco por código, 504290, busca en el json y trae los valores, podría obtener esos valores leyendo el DOM de la tabla o con una función del plugin JDatatable para leer las filas del resultado de la búsqueda, pero lo que realmente requerimos es hacer llegar el criterio con el cual se busco.

Este es un proceso de programación sencillo, el lió se da es cuando se quiere obtener ese valor de la caja, porque esta no posee recurso de código alguno fuera del plugin donde editar este componente, entonces nos vamos  de esta la forma mas fácil.
   
          //En el Controlador
              string2 += "script type="text/javascript"";
              string2 += "  $(function() {";
              string2 += "      var oTableSP =  $('#TablaSeguimientoProduccion').dataTable({"
                    + "             \"bJQueryUI\": true,\n"
                    + "      \"bPaginate\": false\n"
                    + "      \"sScrollY\": '200px',\n"
                    + "      \"bPaginate\": false,\n"
                    + "      \"bScrollCollapse\": true\n"
                    + "        });";
              string2 += "  });";
              string2 += " $(document).ready(function() { "
                    + "     $('div#TablaSeguimientoProduccion_filter input').change(function() { "
                    + "         document.getElementById('formVisor:hiddengeneral').value = $('div#TablaSeguimientoProduccion_filter input').val();"
                    + "      }); "
                    += "  }); ";
              string2 += "/script";
              return string2;
            }
        //el setter y getter para gestionar la informacion de busqueda
            private String filtroGeneral;
            public String getFiltroGeneral(){
               return filtroGeneral;
            }
            public void setFiltroGeneral(String filtroGeneral){
               this.filtroGeneral=filtroGeneral
            }
    

                 //componente xhtml para pasarle el valor, es de tipo oculto no se necesitaria mostrar solo es para que el controlador sepa donde esta la informacion 
                 //y con javascript se pueda enviar.
                            h:inputHidden id="hiddengeneral" value="#{controllador.filtroGeneral}"/