¿Cuál es la forma correcta de rellenar el modelo para la página de índice en una aplicación de Grails? No hay IndexController por defecto, ¿hay algún otro mecanismo para obtener listas de esto y aquello en el modelo?Mejores prácticas para la página de índice de grails
Respuesta
No afirmaré que esta es la manera correcta, pero es una forma de comenzar las cosas. No es necesario tener un controlador predeterminado. Agregar una asignación a UrlMappings.groovy:
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"500"(view:'/error')
"/"
{
controller = "quote"
}
}
}
A continuación, añada una acción índice para el controlador ahora por defecto:
class QuoteController {
def index = {
...
}
}
Si lo que desea cargar ya forma parte de otra acción simplemente redirigir:
def index = {
redirect(action: random)
}
O realmente a conseguir un poco de reutilización en marcha, poner la lógica de un servicio:
class QuoteController {
def quoteService
def index = {
redirect(action: random)
}
def random = {
def randomQuote = quoteService.getRandomQuote()
[ quote : randomQuote ]
}
}
La buena respuesta: Si necesita completar un modelo para la página de índice, es hora de pasar de usar un index.gsp directo a un controlador de índice.
La respuesta malvada: Si crea un filtro cuyo controlador es '*', se ejecutará incluso para páginas estáticas.
No pude obtener el ejemplo anterior de Ed T para que funcione. ¿Quizás Grails ha cambiado desde entonces?
Después de algunos experimentos y algunos hurgando en la red, que terminó con esto en UrlMappings.groovy
:
"/"(controller: 'home', action: 'index')
Mi HomeController se ve así:
class HomeController {
def index = {
def quotes = = latest(Quote.list(), 5)
["quotes": quotes, "totalQuotes": Quote.count()]
}
}
Y en , tengo una index.gsp
archivo. Eso hace que el archivo index.gsp
en vistas sea innecesario, así que lo eliminé.
En griales 1.3.6 para limitarse a añadir
"/index.gsp"(uri:"/")
a UrlMappings.groovy funcionó bien para mí. Tiene el mismo efecto que agregar un nuevo controlador y mapeos como se describió anteriormente.
A continuación es mi completa UrlMappings.groovy:
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
"/index.gsp"(uri:"/")
}
}
¿La redirección con uri funciona en UrlMappings? Lo intenté (para un uso ligeramente diferente), y no fue así. Obtuve un error de que el controlador era nulo. Tuve que recurrir a la redirección desde un controlador. – mcv
- 1. Mejores prácticas para la depuración
- 2. ¿Mejores prácticas para la clase de utilidades?
- 3. Mejores prácticas para C#
- 4. Registro para ASP.NET - Mejores prácticas
- 5. Mejores prácticas para diseñar GUI en GWT
- 6. Mejores prácticas de Javascript
- 7. Mejores prácticas de Sitecore
- 8. mejores prácticas de ctags
- 9. ¿Mejores prácticas de Flex?
- 10. Mejores prácticas de Maven
- 11. Mejores prácticas de PyLint?
- 12. Mejores prácticas de CoreData
- 13. Mejores prácticas de ActionListener
- 14. Mejores prácticas para la compatibilidad heredada
- 15. Mejores prácticas de NAnt
- 16. Mejores prácticas para Magento Deployment
- 17. ¿Mejores prácticas para autoguardar borradores?
- 18. Mejores prácticas para almacenar configuraciones
- 19. Yii multi página formulario asistente de mejores prácticas
- 20. ¿Mejores prácticas para API seguras?
- 21. Mejores prácticas de transacciones
- 22. Mejores prácticas de LinqToSql
- 23. Mejores prácticas de LDAP
- 24. Mejores prácticas de Lucene.Net
- 25. ¿Mejores prácticas de PHP?
- 26. ¿Mejores prácticas para generar tokens de OAuth?
- 27. Mejores prácticas para diseñar atajos de teclado
- 28. ¿Mejores prácticas para nombrar controles de usuario?
- 29. Mejores prácticas para problemas de Eclipse Vista
- 30. Mejores prácticas para paneles de control Plone
Creo que los urlMappings probablemente deberían haber leído ' "/"{controlador: "cita"}'. No funcionó para mí hasta que cambié el "=" a un ":". –
'static defaultAction =" random "' - en lugar de redirigir desde la acción de índice, puede agregar el campo estático de acción predeterminado al controlador con el nombre de la acción deseada como valor. – topr