model view controller - inglés - Accediendo al modelo desde una vista de diseño en Grails
cómo se dice en inglés (1)
Sugeriría utilizar la solicitud o el alcance de la sesión para ese fin. Probablemente, la forma más SECA es poblar el alcance es un filtro. Por ejemplo, en el archivo grails-app / conf / SecurityFilters.groovy (deberá crearlo):
class SecurityFilters {
def filters = {
populateCurrentUser(controller: ''*'', action: ''*'') {
before = {
request.user = User.get(session.userId)
}
}
}
}
El ejemplo asume que almacena la identificación del usuario actual en el atributo de sesión "userId" y que tiene una clase de dominio "Usuario". Usarlo en el diseño es tan simple como esto:
<g:if test="${request.user}">
Current User: ${request.user.username}
</g:if>
Estoy usando el soporte de diseño (sitemesh) en Grails, que funciona bien. Me gustaría ajustar mi diseño para que dependa de si un usuario está conectado o no.
Mi grails-app / views / layouts / main.gsp contiene el siguiente código:
<g:if test="${user}">
Username: ${user.username}
</g:if>
Sin embargo, parece que el diseño: GSP: s no pueden acceder al modelo y, por lo tanto, a la variable de usuario (obtengo una excepción "Sin sesión" cuando intento). ¿Cuál sería la forma recomendada de hacer que mi diseño dependa de si un usuario está conectado o no?
¡Gracias por adelantado!