Estoy tratando de usar Grails Scaffolding para juntar una aplicación CRUD rápida alrededor de algunas tablas de bases de datos heredadas (ver this previous StackOverflow question para la saga hasta ahora). Ahora supero el peor de los problemas y tengo una aplicación CRUD en funcionamiento, pero queda un problema con la usabilidad general.Grails Andamios con etiquetas amistosas (en lugar de claves ID)
Muchos de mis objetos de dominio tienen asociaciones de claves foráneas con otros objetos de dominio. Un Contact
pertenece a una Owner
, etc.
Sin embargo, en las páginas CRUD para Contact
, yo no quiero ver la clave real para id
Owner
... porque eso no significa nada para los usuarios humanos. En su lugar, quiero que se muestre el valor Owner.name
más amigable para con los humanos.
Las vistas "list" y "show" abordan explícitamente todos los atributos en el código generado automáticamente por la Vista, y tengo la capacidad de ajustar ese código para controlar lo que se presenta. Sin embargo, las vistas "crear" y "editar" no enumeran todos los atributos. En cambio aquellos Vistas hacen algún tipo de Grails taglib llamar así:
...
<fieldset class="form">
<g:render template="form"/>
</fieldset>
...
Esta llamada aparentemente detecta automáticamente en tiempo de ejecución lo que los campos son, y toma sus propias decisiones sobre cómo mostrarlos. Para los objetos de dominio que tienen asociaciones, toma la mala decisión de mostrar el ID de galimatías del objeto asociado en lugar de un atributo más amigable para el ser humano.
¿Existe alguna manera "fácil" (o al menos "mejor práctica") de cambiar la forma en que los campos se muestran en una vista "editar" o "crear"? Sin duda, este es un problema común cuando se utiliza el uso de Andamios con objetos de dominio que tienen asociaciones.
Esto es un asunto secundario, pero más tarde descubrí que este fragmento de código anterior simplemente está extrayendo HTML del archivo "_form.gsp", que se genera automáticamente en el mismo directorio que las vistas generadas automáticamente para ese objeto de dominio . –