Creare un progetto Grails

Spread the love

Da linea di comando (oppure posizionando il puntatore sopra la cartella della IDE “grails-app/domain” e scegliendo New > Grails Domain Class)

$ grails create-domain-class Contact

Grails crea la classe agenda/Contact con un po’ di default, noi la personalizziamo così

package agenda

class Contact {

    static constraints = {
    }

    String nome
    String cognome
    String azienda
    String email
    Date dataNascita

}

Poi creiamo un controller definendo come default lo scaffold (Grails crea views, metodi e orm per eseguire il CRUD di base).

Anche qui possiamo agire da linea di comando oppure, posizionandoci con il mouse sopra grails-app/controllers e scegliendo New > Grails Controller

$ grails create-controller

Anche qui personalizziamo l’artefatto:

package agenda

class ContactController {

    def scaffold = Contact

    def index() { }
}

L’unica personalizzazione è la riga 5 in cui diamo la direttiva del controller di creare metodi e viste per lo scaffold della classe Contact.

Ora si tratta di far girare l’applicazione o cliccando sul pulsantino verde in alto a destra oppure dando il comando

$ grails run-app

e puntare il browser a http://localhost:8080/agenda/

Il bello è che l’applicazione ha già una certa funzionalità di crud, infatti posso già invocare il controller cliccando su agenda.ContactController

Il Controller, a fine salvataggio mi da conferma del salvataggio:

Peccato che però la lista sia vuota

Occorre infatti configurare un supporto dati permanente, come un database. Out-of-the-box Groovy utilizza Hibernate con questa configurazione:

dataSource {
    pooled = true
    jmxExport = true
    driverClassName = "org.h2.Driver"
    username = "sa"
    password = ""
}

// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
        }
    }
...
}

Ho preso spunto da Mokabyte

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.