Tutorial Belajar Grails Part 4: Dynamic Scaffolding

Berlanjut dari artikel sebelumnya, sekarang kita akan mencoba membuat domain class, domain class disini dapat kita pahami fungsingya sebagai model pada aplikasi grails. Untuk membuat domain class kita bisa langsung tambahkan pada folder grails-app -> domain menggunakan ide yang kita gunakan, atau bisa kita gunakan command melalui terminal

grails create-domain-class EOUser
grails create-domain-class EOEvent

Hampir sama dengan model pada aplikasi java, kita akan mendeklarasikan properties untuk domain class kita, hanya bedanya kita tidak perlu membuat getter dan setter dari properties yang kita buat. Selain itu walaupun groovy merupakan dynamic language, namun kita tetap perlu mendeklarasikan type data dari properties yang kita gunakan karena model ini nantinya yang akan berhubungan dengan schema pada database dan nantinya grails akan menggunakan tipe data yang kita deklarasikan untuk memilih default html element yang pas untuk view yang akan kita gunakan.

Berikut contoh domain class

class EOUser {

    String fullName
    String userName
    String password
    String email
    String website
    String bio

    static constraints = {

        fullName blank: false
        userName blank: false
        password blank: false, password: true
        email blank: false, email: true
        website blank: true, url: true
        bio blank: true, maxSize: 2000
    }
}

class EOEvent {

    String city
    String name
    String organizer
    String venue
    Date startDate
    Date endDate
    String description

    static constraints = {

       name blank: false
       city blank: false, nullable: false
       description blank: false, maxSize: 2000
       organizer()
       venue blank: false
       startDate()
       endDate()
    }
}

Dapat kita lihat terdapat 2 domain class, kita deklarasikan tipe data dari properties yang kita buat tanpa perlu membuat getter dan setter. Kita juga bisa melakukan validasi terhadap properties kita melalui domain class ini yaitu dalam blok constraints. Nanti akan kita lihat bagaimana proses validasi melalui constraints ini akan bekerja.

Selanjutnya kita akan membuat controller dari kedua domain class yang sudah kita buat. Bisa kita tambahkan pada folder grails-app -> controller menggunakan ide yang kita gunakan atau menggunakan terminal dengan command,

grails create-controller EOUser
grails create-controller EOEvent

lalu coba kita buka file controller yang sudah kita buka, lalu tambahkan code sesuai contoh dibawah,

class EOEventController {

    def scaffold = EOEvent
}
class EOUserController {

    def scaffold = EOUser
}

Kalau coba kita run aplikasi EventOrganizer, maka tampilannya akan sebagai berikut,

grails3

Kita bisa melihat terdapat 2 controller tambahan seperti yang telah kita tambahkan sebelumnya, sebagai contoh jika kita klik link EOUserController, maka kita akan melihat beberapa fitur yang sudah bertambah dengan sendirinya, seperti Add, delete, list view, edit user. Jika kita masuk pada create user maka kita akan melihat tampilan seperti dibawah,

grails4

Nahh disini kita bisa melihat constraints yang telah kita tambahkan pada domain class tadi bekerja, grails akan mengenerate view yang cocok sesuai dengan constraints yang telah kita definisikan. Lalu anda pasti bertanya-tanya, lalu dari mana fitur-fitur add,delete dan sebagai macamnya dating begitu saja hanya dengan 1 baris?


def scaffold = EOEvent

fitur tersebut lah yang menjadi salah satu kekuatan magic dari grails yang dinamakan dynamic scaffolding. Dynamic scaffolding akan mengenerate fitur-fitur tersebut dengan sendirinya, hanya perlu kita definisikan domain classnya, namun tentu dengan default yang sudah ada.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s