Je commence juste à utiliser les grails, et j'ai un problème.Je n'arrive pas à faire en sorte que la méthode "rendu" du contrôleur de gravier fonctionne avec un modèle explicite.
J'ai un pour les projets page d'accueil « contrôleur » et « vue » (il n'y a pas de modèle pour la page d'accueil)
J'ai appelé la vue « index.gsp », et le mettre dans une vue du répertoire/Cependant, peu importe ce que je fais, grails essaie de lire la page "home.gsp" (et ensuite home.jsp), bien que j'aie explicitement spécifié l'index avec l'attribut "template" dans l'appel de rendu .
class HomeController {
String someparameter = "xyzzy"
def index = {
render(view:"home", template:"index") // I also tried "index.gsp" and "home/index.gsp"
}
}
Je pense que je peux utiliser le « modèle » attribut mal, parce que je ne vois que cela utilisé dans les exemples pour une vue moins-rendu de modèle. Cependant, la documentation ne donne aucune limitation de ce type.
Existe-t-il un moyen de spécifier explicitement le nom d'un modèle? J'ai juste cédé et l'ai renommé "home.gsp", mais j'aimerais comprendre ce qui ne va pas.
(La page d'accueil dans cette application n'a pas de « modèle ». Grails utilisera le contrôleur a le modèle. Dans cet exemple, vous pouvez accéder à « someparameter » dans le modèle gsp comme $ {someparameter}.)
Merci! Je me suis rendu compte moi-même quand je relisais "le guide définitif des grails" Il s'avère que si je veux avoir un ".gsp" nommé "index.gsp" sous un nom de famille, il trouvera la "maison" répertoire automatiquement basé sur le nom du contrôleur, et tout ce que je dois faire est de dire rendre (vue: "index") vue ne fait pas vraiment référence à un "vue", il se réfère à un fichier .gsp sous le répertoire de vue nommé le même que le contrôleur. Parfois, cette programmation «conventionnelle» peut bousiller un noob habitué à d'autres termes. –
Et d'ailleurs, vous n'avez même pas à rendre explicitement la vue, car Grails cherchera une vue avec le même nom que l'action si vous n'en spécifiez pas. –