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
Commenti recenti