Errores en FAP: Compilación de plantillas para Columnas en Tablas (atributo "funcion")

1 view
Skip to first unread message

DANIEL FERNANDEZ RODRÍGEZ

unread,
Apr 22, 2013, 6:30:22 AM4/22/13
to fap-s...@googlegroups.com

Buenas, envío este mensaje para informar de que creo que he detectado un error en cómo gestiona FAP el atributo "funcion" de los elementos Columna en las tablas.

 

En primer lugar, cosa que no tiene que ver con el error, en la documentación se dice que en el atributo función se colocan los campos en formato ${campo}; Se sobreentiende que en dicho atributo se podría utilizar cualquier cosa del lenguaje de las plantillas; pero al parecer no admite utilizar tags personalizados. ¿No sería mejor idea eliminar la comprobación de que se utilice ${campo} en dicho atributo para asi poder especificar una función totalmente personalizada? Ya que de esa manera tendría mas sentido el uso del atributo, ya que de otro modo se encuentra muy limitado.

 

En cuanto al error, que también tiene que ver con lo anterior, al sobreentender que no se va a utilizar otro formato en el atributo "funcion" que no sea ${campo} al parecer se ha omitido el escapado de las comillas y otros caracteres que podrían dar lugar a errores. Me sucedió cuando intentaba lo siguiente:


Con lo que lo solucioné escapando las comillas manualmente, cosa que nuevamente me dio un error (debido a la no admisión del uso de tags personalizados):

 

Y finalmente comprobé que no podía utilizar el tag de ninguna manera, colocando directamente el campo en el tag:


¿Hay alguna posible solución? Y si no, ¿hay alguna manera de lograr lo intentado? Del mismo modo, debido a lo mismo, también estoy teniendo problemas para hacer aparecer valores de listas en lugar de claves, ya que debido a lo mismo no me deja usar la función models.TableKeyValue.getValue().

 

Gracias de antemano y un saludo.

jelcaf

unread,
Apr 23, 2013, 3:05:49 AM4/23/13
to fap-s...@googlegroups.com
Hola,

El atributo función de las columnas, no es como una "vista" de Play Framework, con lo que no se puede utilizar cualquier "cosa" del lenguaje de las plantillas. Y tampoco se pueden "pasar" vistas como parámetros a otras vistas como pretendes (Play no te lo permite).

Pero existe una forma mucho más simple de hacer algo parecido a lo que quieres, y creo te funcionará. Te puedes declarar un atributo transient y sobreescribir el método de ese atributo, devolviendo lo que quieras.

Entity MiEntidad {
   ...
   String atributo transient
}

y en el modelo (MiEntidad.java), en la parte preparada para el código manual, hacer lo siguiente:

public String getAtributo() {
   ....
   return "lo que quieras";
}

Si tienes cualquier duda, coméntanoslo.

Saludos.
Jorge Carballo.


--
Has recibido este mensaje porque estás suscrito al grupo "fap-support" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a fap-support...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a fap-s...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/fap-support?hl=es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

FuncionTagPersonalizado.png
FuncionComillasErrorTag.png
FuncionComillas.png

DANIEL FERNANDEZ RODRÍGEZ

unread,
Apr 23, 2013, 4:25:55 AM4/23/13
to fap-s...@googlegroups.com

Buenas, si efectivamente estuve mirando el código fuente del FAP y ya vi como funciona el atributo función de las columnas; me pareció buena idea añadir otro atributo funcionRaw para poder especificar un código JavaScript personalizado en la función que da el texto a las columnas, ya que de otra forma el atributo esta muy limitado. Lo del atributo transient no lo había considerado, pues idealmente se trata de conseguir la mayor funcionalidad posible modificando el menor código Java posible, pero si no hay otra manera desde el DSL será la forma que utilizaré. (para mantener compatibilidad con el modulo FAP oficial)

 

Respecto al atributo funcionRaw, me parecería interesante añadir esa posibilidad al FAP, para sin añadir atributos nuevos a las entidades y escribir código java, poder hacer cosas del tipo funcionRaw="${campoBooleano} ? 'Si' : 'No'". (habría que comprobar si campoBooleano es pasado al JavaScript como valor true o cadena de texto 'true', doy por hecho que se pasa como valor true).

 

Si realizo la modificación y funciona, sería posible hacer un pull request en github para añadirlo al modulo oficial?

 

Gracias de antemano y un saludo

 


De: jelcaf [jel...@gmail.com]
Enviado el: martes, 23 de abril de 2013 8:05
Para: fap-s...@googlegroups.com
Asunto: Re: [fap-support: 368] Errores en FAP: Compilación de plantillas para Columnas en Tablas (atributo "funcion")

Reply all
Reply to author
Forward
0 new messages