Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Modulos Personalizados JSP

Daniel
2012-04-24
2012-11-26
  • Daniel
    Daniel
    2012-04-24

    Buenos días,

    Conjuntar una aplicación personalizando la apariencia, con enlaces a todos los modulos, y, la idea era partir de la opción de personalizar las vistas mediante JSP. Por lo que veo, el sistema está preparado para la vista "detalle", pero para la vista de lista "Tab", no doy con la manera de hacerlo. La cuestión es, se puede?, o el tema de personalizar la vista es sólo para la vista detalle.

    He probado a incluir el modulo entero con <jsp include:page>…. y me lo incluye, pero entonces en el enlace a dicho módulo tengo que poner el archivo directamente .jsp, y no el módulo, con lo que me encuentro que los controladores no se cargan y no funcionan al no hacer referencia en el enlace al modulo en sí openxava, sinó a un archivo .jsp.

    También he probado a referenciar un modulo, que está definido en aplicacion.xml, y que se define mediante vista personalizada en jsp, dicho modulo, coge como modelo una clase vacía,  y en el JSP, hago el include module incluyendo cada modulo que me interesa, pero así, me encuentro con que tampoco el funcionamiento es el correcto, ya que me aparece la lista "tab", pero al hacer clic en un elemento no se abre la vista detalle de ese elemento, simplemente, no hace nada.

    La última idea era probar de definir el modulo con vista personalizada, y en dicha vista jsp hacer un <jsp:include page…> incluyendo la página que define la vista de lista, pero no me sale tampoco, no se que parámetros necesita, ni si se puede hacer.

    En resumen necesitaría una pequeña guía o listado de opciones TagLibs openxava, es decir, todo lo que se puede hacer en las páginas jsp personalizadas para incluir partes de los modulos openxava, he buscado en la guia de referencia openxava y no veo mas que los includes de editores, botones, enlaces, acciones… y un modulo entero, sin más.

    A parte, si alguien ve directamente como hacer lo que necesito, que es páginas jsp que incluyan modulos con su completa funcionalidad en modo lista.

    Gracias. Saludos.

     
  • Javier Paniza
    Javier Paniza
    2012-04-26

    Hola Daniel,

    la verdad es que no he entendido bien lo que quieres hacer, así que mi respuesta puede que no sea muy buena.
    Si lo que quieres es hacer un menú de opciones puedes hacer una página JSP que tenga todo los vínculos y se encargue de incluir el módulo actual con <jsp:include />.

    Si quieres una página que contenga varios módulos, al estilo de un portal, tampoco hay problema, incluye todos los módulos que quieras con <jsp:include /> y te funcionará.

    No hay ningún problema para incluir módulos OX en otras páginas, incluso varios de ellos. El código JavaScript de OX está diseñado para con colisionar.

    Intenta explicar tu idea con una imágen, si entiendo tu objetivo te podré aconsejar mejor.

    -------
    Ayuda a otros en este foro como yo te ayudo a ti
    y no olvides leer el libro de OpenXava.

     
  • Daniel
    Daniel
    2012-06-07

    Hola Javier,

    perdón por la tardanza, el tema ya lo tengo solucionado.  La idea es hacer una página que incluya un módulo y un menú de navegación superior con enlaces a otros módulos, los cuales apunten a otra página que contenga otro módulo distinto y con el mismo menú de navegación. Esto ya lo tengo conseguido, lo que no funciona, y lo tengo solucionado un poco "a lo cutre" es que uno de los enlaces del menú de navegación es para salir de la aplicación, lo que te debe volver a la página incial (para loguearte) y resetear las variables de sesión. Esto no funciona entiendo yo al estar fuera del módulo, ya que se trata de páginas JSP con <a hrfef a otras páginas jsp, las cuales tienen el trozo <jsp:include/> para incluir los módulos, pero el enlace al botón SALIR queda fuera de ese include, está como independiente en la página JSP, con lo cual, creo que lo que pasa es que como la acción SALIR hace referencia a volver al módulo anterior, debe tener como módulo anterior = NULL, y no hace nada. Si los enlaces superiores los pongo como enlace a un módulo, no a una página jsp, entonces si que funciona bien el botón SALIR.

    De todas formas, si hay solución fácil bien, si no tampoco pasa nada ya que al final lo que he hecho es poner el Botón SALIR como una acción definida en cada módulo, por lo que, visualmente no aparece en el menú de enlaces superior sinó dentro del módulo, como acción de lista en la parte inferior.

    Así que bueno, muchas gracias de todas formas.

    Saludos.

     
  • Javier Paniza
    Javier Paniza
    2012-06-11

    Hola Daniel,

    ¿por qué no pones la opción salir como un enlace a la página de Login y en el JSP de ésta reinicias las variables de entorno?

    -------
    Ayuda a otros en este foro como yo te ayudo a ti
    y no olvides leer el libro de OpenXava.

     
  • Daniel
    Daniel
    2012-06-12

    Hola Javier,

    pues es una buena idea. Sólo una cosa, para reiniciar variables de entorno desde un JSP utilizo la función:

    context.put(request,objeto,valor)
    

    Gracias.

     
  • Daniel
    Daniel
    2012-06-14

    Hola de nuevo,

    he probado lo que me dijiste y funciona a la perfección, la función que he puesto para asignar variables de sesión en un jsp es correcta, la de context.put().

    Gracias por la ayuda, saludos!

     
  • Daniel
    Daniel
    2012-06-26

    Hola Javier,

    me corrijo de lo último dicho, no me funciona lo de re-asignar valores a las variables de sesión que contienen el id del usuario, etc…

    Si salgo y vuelvo a entrar con otro usuario, me aparecen datos relacionados con el usuario anterior. Como debería hacerlo para resetear los objetos de sesión definidos en controladores.xml a los valores de defecto desde el JSP de login?.

    Gracias.

     
  • Daniel
    Daniel
    2012-06-26

    Buenas Tardes,

    he estado probando lo de cambiar objetos de sesion desde los JSP, y realmente si que asigna los valores correctamente el metodo context.put(). El problema me viene al acceder a los módulos, ya que tengo acciones "al-iniciar" en varios de ellos. Lo que ocurre es lo siguiente:

    1 - Accedo con un usuario a la aplicación.
    2 - accedo a un módulo con filtro por usuario mediante una acción - "al-iniciar".
    3 - Cierro sesión y vuelvo a la página de login.
    4 - Inicio sesión con otro usuario.
    5 - Vuelvo al mismo módulo que antes y me salen los mismos valores.

    La explicación está en el "al-iniciar", supongo que el módulo ya se da por iniciado y no me vuelve a filtrar según usuario, por lo que me muestra los datos anteriores. Esto se podría arreglar mediante el parametro "en-cada-petición". Pero esto me presenta otro inconveniente, ya que la vista de estos módulos, en modo detalle, está dividida en pestañas, y al cambiar entre pestañas también se ejecutaría el filtrado, con lo cual, los datos que hubiera cambiado de la primera pestaña, al pasar a la 2a pestaña sin grabar, se me pierden y se me recuperan los de la base de datos, ya que se ejecuta de nuevo el filtro que me rellena los campos de la base de datos.

    Total, no se como resolver esto, haber si me podéis orientar un poco.

    Gracias.

     
  • Daniel
    Daniel
    2012-06-27

    Hola de nuevo,

    ya lo he conseguido resolver.

    en las acciones donde cojo los datos de la base de datos filtrando por usuario, para evitar que al cambiar entre pestañas/secciones se me refresque de nuevo los valores con los de la bd, hago lo siguiente:

    if (getView().getValues().isEmpty){
        ….. // cojer valores de bd.
    }

    Con lo cual, solamente los coje la primera vez, cuando la vista está en blanco. No se si es un poco chapuzero o que, pero funciona.

    Gracias de todas formas.