Introduktion til Grails

Tags:    grails hjemmeside groovy
Skrevet af Bruger #5097 @ 30.03.2011



Gennemgang af controller
Vi kikker nu på vores controller. Denne indeholder koder til hver actions (eksempelvis def list = {...). Bemærk at en action har præcis det samme navn som dets view-fil. Dette er endnu en konvension.
Hele koden ser således ud:

Fold kodeboks ind/udJava kode 



Jeg vil nu gennemgå de forskellige actions:

List:
Fold kodeboks ind/udJava kode 

Denne kode har til formål at give list.gsp de informationer den har brug for. Her laver vi, i linje 2, et parameter med navnet max som giver en begrænsning på hvor mange instancer der kan vises per side i list.
Den næste linje (linje 3) returnerer instanser til vores gsp fil. I dette tilfælde laver vi en instans med navnet venInstanceList som er en liste som overholder de parametre vi tidligere har givet. Derudover returneres instansen venInstanceTotal som indeholder antallet af venner i Ven.



Create:
Fold kodeboks ind/udJava kode 

Create sørger for af give create.gsp en tom instans, som den kan bruge til indsætte nyt data i. Bemærk at venInstance har data typen def. Dette skyldes at Groovy selv finder ud af hvilken type du bruger, hvis du vælger dette. Vi kunne derfor lige så godt også skrive Ven i stedet for def.
I næste linje giver vi instansen i egenskaber som findes i parameteret. Som udgangspunkt er det ingen. Til sidst returneres instansen.


Save:
Fold kodeboks ind/udJava kode 

Dette er en POST (læs mere: http://en.wikipedia.org/wiki/POST_%28HTTP%29 ) metode, hvilket den er blevet defineret som tidligere i controlleren på følgende linje:
Fold kodeboks ind/udJava kode 

Denne action bliver kaldt når folk inde på save.gsp trykker ”opret”.
I første linje (linje 2) laver vi en ny instans af Ven med de parametre vi har fået fra formen. Vi prøver derefter at gemme instansen i linje 3. Dette gøres ved brug af venInstance.save(). Hvis den bliver oprettet laver vi en standart-besked som siger at den er oprettet (linje 4-5), og videresender en show.gsp.
Hvis ikke instansen kunne gemmes renders create siden igen, men denne gang vises venInstance i formularen (linje 8).


Show:
Fold kodeboks ind/udJava kode 

Denne bliver brugt af show.gsp til at vise den instans med id'et som ligger i params.id. Blev den ikke blev fundet bliver man videresendt til list.gsp med en standart fejlmeddelsels. Ellers returnes instansen.



Edit:
Fold kodeboks ind/udJava kode 

Henter en bestemt instans ned, så den kan blive ændret. Koden er fuldstændig som hos show.


Update:
Fold kodeboks ind/udJava kode 

Er en POST som bliver kaldt når man fra edit.gsp trykker man ret knappen. I linje 2 henter vi den instans som vi ønsker at ændre. Dette gøres ud fra at vi kender id (alle instanser har et unikt id).
I 3 linje tjekker vi derefter om den eksisterer, hvis ikke laver vi (se linjerne fra 22) en fejlmeddelelse og videresender til actionen list.
I linje 4-6 henter vi det versionsnummer som vores rettelser har. Alle instanser har nemlig et version nummer i stigende rækkefølge. I linje linje 6 tjekker vi om vores rettelser har et nyere nummer. Hvis ikke, betyder det at der er blevet rettet i instansen i et andet vindue imens, vi har rettet i det. Derfor giver der i sådan et tilfælde en fejlmeddelelse (linje 7-10).
Hvis der ikke har været nogen problemer ind til videre, vil vi i linje 13 indsætte rettelserne i instansen, og gemmer den i linje 14. hasErrors() vil jeg i denne ikke artikel ikke beskæftige mig med, og vil derfor bare bede folk accepterer det står i koden.



Delete:
Fold kodeboks ind/udJava kode 

Denne action er endnu en POST, som benyttes til at slette instancen med et id fra parameteret af. Ligesom i java, bliver vi her nød til at benytte try-catch til at opfange eventuelle exceptions.




Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (4)

User
Bruger #16502 @ 18.04.11 01:22
Hvorfor bruge grails istedet for rails?
User
Bruger #5097 @ 18.04.11 02:24
Hej Asker. Tja... Det er lidt et religions-spørgsmål. Altså sådan lidt smag og behag. De kan begge det samme. Grails er kraftigt inspireret af Ruby On Rails, så også opbygningen virker ens i begge miljøer.
Jeg tror det væsentligste argument for at vælge Grails frem for Ruby er hvis du allerede kender til Java, eller evt. sprog der ligner såsom C, C++ og PHP. Kender du til dem vil du føler dig rigtig godt hjemme i Grails.
De fleste med kendskaber til Ruby skal nok vende sig til deres (efter min mening) lidt anderledes syntax. Så derfor er Grails nok et godt valg for mange...
User
Bruger #4487 @ 13.05.11 12:09
Hej, Jeg syntes at det var en god introduktion til Grails, og det har virkelig vækket min nysgerrighed til dette framework. Jeg håber at der kommer en efterfølger, som går lidt mere i dybden med frameworket, og gerne en der hjælper begynderen som mig igang med at lave en hjemmeside ved hjælp af grails.
User
Bruger #5097 @ 13.05.11 18:22
Hey Martin. Tak for rosen. Jeg tænker også stærkt over tanken om en to'er. Vil måske lave en om ikke så længe
Du skal være logget ind for at skrive en kommentar.
t