Carga dinámica de valores de atributos desde BBDD

cancel
Showing results for 
Search instead for 
Did you mean: 
dmralfesp
Member II

Carga dinámica de valores de atributos desde BBDD

Necesito tener para un determinado tipo documental ciertos atributos, cuyos valores se obtengan de una consulta a una tabla de BBDD y se vean en el interfaz como combos. Además necesito que esto funcione con dependencias, es decir, que tengas por ejemplo 2 combos, y cuando cambies el primero, actualice los datos del segundo, que a su vez sean obtenidos de una query usando el elemento elegido en el primero. ¿Todo esto se puede hacer en Alfresco a nivel de configuración o requeriría desarrollo a medida?
5 Replies
venzia
Senior Member

Re: Carga dinámica de valores de atributos desde BBDD

Para ello se requiere extender Alfresco (cambio el post de apartado).
Sigue el post de Adri y seguro que lo sacas sin demasiados problemas ;D https://forums.alfresco.com/es/viewtopic.php?f=6&t=843.
Saludos,
dmralfesp
Member II

Re: Carga dinámica de valores de atributos desde BBDD

OK, gracias Javier, gracias a esto ya voy a  poder cargar datos de BBDD en combos. Pero el problema que tengo ahora es que hay combos dependientes, sería el clásico ejemplo de países y ciudades, que tendrás unos u otros valores de ciudades en función del país cargado. ¿esto también es posible?
venzia
Senior Member

Re: Carga dinámica de valores de atributos desde BBDD

Por supuesto, solo tendrás que añadir la lógica para que el combo dependiente reciba el parametro que lo filtra desde la seleccion en el 1er combo.
Saludos,
dmralfesp
Member II

Re: Carga dinámica de valores de atributos desde BBDD

OK, supongamos el ejemplo de paises y ciudades. Creo que haría falta una clase para los paises y otra clase distinta para las ciudades, ¿no?. Lo que no sé es cómo obtengo,dentro del método loadDB () de la clase de las ciudades, al valor que haya seleccionado en el combo de países. Es decir, lo que acabo de marcar en negrita:

protected void loadDB() {
      
       String driverName = "org.gjt.mm.mysql.Driver";
        String serverName = "localhost";
        String mydatabase = "alfresco";
        String username = "alfresco";
        String password = "alfresco";
        List<String> av = new ArrayList<String>();
        List<String> al=new ArrayList<String>();
        try {
           Connection connection = null;
            Class.forName(driverName);
            String url = "jdbc:mysql://" + serverName +  "/" + mydatabase;
            connection = DriverManager.getConnection(url, username, password);
            Statement stmt = connection.createStatement();
            String codigoPais=<<no sé con qué método obtento el código de país que haya seleccionado en el combo de paises>>
            ResultSet rs = stmt.executeQuery("select ciudad from ciudades where cod-pais='"+ codigoPais+"'");
            while (rs.next()) {
                av.add(rs.getString("code"));
                al.add(rs.getString("label"));
            }
        }
        catch (Exception e) {}
      
      super.setAllowedValues(av);
      this.setAllowedLabels(al);
   }
}

¿Cómo obtengo el valor seleccionado de otro atributo?
venzia
Senior Member

Re: Carga dinámica de valores de atributos desde BBDD

Hola de nuevo, reviviendo el hilo comentar que hemos contribuido con el desarrollo de un componente para Share que permite hacer lo que necesitas de forma mucho más potente (aunque lo de la "dependencia" no está implementado puedes hacerlo tu, ya que tienes los fuentes disponibles). Es el denominado Alfresco MetaDBConnector y lo puedes descargar de http://addons.alfresco.com/addons/alfresco-metadbconnector-component.

Espero que sirva de ayuda para todos los que se encuentren en tu misma tesitura.
Saludos!