Viele der verfügbaren Controller-Methoden (Chain, Forward, Redirect) verwenden eine Map, die beispielsweise folgende Schlüssel enthalten kann:
Ein paar Fragen dazu:
chain(controller: "member", action: "showProfile", params: [id: memberId])
und
chain(controller: "member", action: "showProfile", id: memberId)
Alles, was Burt gesagt hat, ist richtig. Der Grund dafür, dass Sie eine Kette (wenn Sie ein Modell haben) oder eine Umleitung (wenn Sie kein Modell beibehalten möchten) haben, liegt daran, dass beide Methoden eine 302-Weiterleitungsantwort an den Browser zurückgeben . Der Browser fragt dann nach der nächsten Seite.
Es hat dann die richtige URL in der Kopfzeile für die resultierende Seite und nicht die URL von der Seite, von der die ursprüngliche Anfrage stammt.
Dieses Muster ist sehr nützlich nach einem POST von Informationen, da es alle Arten von Problemen mit Lesezeichen vermeidet und Informationen erneut einreicht, wenn der Benutzer die Aktualisierung auf der resultierenden Seite trifft.
Beispiel: Wenn Sie ein Buch speichern und die Listenseite rendern möchten, wenn das Buch erfolgreich gespeichert wurde. Wenn Sie in Ihrer Methode nur "controller.list ()" aufrufen, wird dem Benutzer die Liste der Bücher angezeigt, die gerendert werden, aber die URL-Leiste sagt immer noch "... / book / save". Dies ist nicht gut für Lesezeichen oder erneutes Laden. Stattdessen wird die Umleitung / Kette an den Browser gesendet, um sie nach der "... / Buch / Liste" Seite zu fragen, was sie tut. Alle Ihre Variablen (Ihr Modell und andere Flash-Nachrichten) befinden sich im Flash-Bereich, so dass sie für Ihr Modell / Ihre Ansicht weiterhin verfügbar sind und alles in der Welt glücklich ist.
Dieses Muster heißt Post / Redirect / Get .
'id' kommt von UrlMappings-Einträgen wie "/ $ controller / $ action? / $ id?" - Siehe Ссылка zur Verwendung.
Params sind Querystring-Parameter oder Form-Post-Parameter, auf die in Nicht-Grails-Apps über "request.getParameter ('foo')" zugegriffen wird, in Grails jedoch vereinfacht als "params.foo". Der Inhalt der Modellkarte wird in den Anforderungen als Attribute gespeichert, auf die in Nicht-Grails-Apps mit "request.getAttribute ('foo')" zugegriffen wird, die jedoch in Grails als "request.foo" vereinfacht oder typischerweise direkt in GSPs, z. "$ {foo}".
Tags und Links grails