HI THIS TOUTORIAL WILL HELP FULL FOR STARTUP IN GRAILS CREATED BY NAVEENRAJU
Part8: Ternery RelationShip in sql by using Grails views
Part9:Gsp Tags And there Implimentation in gsp Pages
Demo1:MVC Dynamic Finders For Author,Book
Step1:create domain class BookBook.groovy
package dynamicfindersclass Book {
String titleDate releaseDate
String toSting(){
return "title"
}
}
Step2:create domain class Author
Author.groovy
package dynamicfinders
class Author {
String name static constraints = { }}
Step3:create Controller AuthorController
AuthorController.groovy
package dynamicfinders
class AuthorController {
static scaffold=Author}
Step4:create Controller BookController
BookController.groovy
package dynamicfinders
class BookController {
static scaffold=Book
def booksearch={
def query = Book.where {
title == "Java"
}
def book = Book.findByTitle("BillGen")
Book bart = query.find()
//render(book)
def book1 = Book.findByTitleLike("Java%")
def books = Book.findAllByTitleLikeAndReleaseDateGreaterThan( "%Java%", new Date() - 30)
[book:book,book1:book1,books:books,bart:bart]
}
}
Step5:create view booksearch
in path:
dynamicfinders/grails-app/views/book/booksearch.gsp
booksearch.gsp
<html>
<body>
<h1> Book1 ${book}</h1>
<h1>Book2 ${book1}</h1>
<h1>Book3 ${book2}</h1>
<h1>Book4 ${book3}</h1>
<h1>Book5${book4}</h1>
<h1>Book6${books}</h1>
<h2>Book7${bart}</h2>
</body>
</html>
O/p:
Demo2:Dynamic Scaffolding to MVC Patterns
step1: create domain class Reports
Reports.groovy
package mvcdemo
class Reports {
String repotName
String unit
String owner
static constraints = {
}
}
step2: create controller ReportsController
ReportsController.groovy
package mvcdemoclass ReportsController {
static scaffold=Reports}
step3: Go to terminal and type
grails generate-all mvxdemo.reports
OR
grails generate-all *
step4: then go to ReportController.groovy
code is auto Generated
package mvcdemo
import org.springframework.dao.DataIntegrityViolationException
class ReportsController {
static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
def index() {
redirect(action: "list", params: params)
}
def list(Integer max) {
params.max = Math.min(max ?: 10, 100)
[reportsInstanceList: Reports.list(params), reportsInstanceTotal: Reports.count()]
}
def create() {
[reportsInstance: new Reports(params)]
}
def save() {
def reportsInstance = new Reports(params)
if (!reportsInstance.save(flush: true)) {
render(view: "create", model: [reportsInstance: reportsInstance])
return
}
flash.message = message(code: 'default.created.message', args: [message(code: 'reports.label', default: 'Reports'), reportsInstance.id])
redirect(action: "show", id: reportsInstance.id)
}
def show(Long id) {
def reportsInstance = Reports.get(id)
if (!reportsInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'reports.label', default: 'Reports'), id])
redirect(action: "list")
return
}
[reportsInstance: reportsInstance]
}
def edit(Long id) {
def reportsInstance = Reports.get(id)
if (!reportsInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'reports.label', default: 'Reports'), id])
redirect(action: "list")
return
}
[reportsInstance: reportsInstance]
}
def update(Long id, Long version) {
def reportsInstance = Reports.get(id)
if (!reportsInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'reports.label', default: 'Reports'), id])
redirect(action: "list")
return
}
if (version != null) {
if (reportsInstance.version > version) {
reportsInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
[message(code: 'reports.label', default: 'Reports')] as Object[],
"Another user has updated this Reports while you were editing")
render(view: "edit", model: [reportsInstance: reportsInstance])
return
}
}
reportsInstance.properties = params
if (!reportsInstance.save(flush: true)) {
render(view: "edit", model: [reportsInstance: reportsInstance])
return
}
flash.message = message(code: 'default.updated.message', args: [message(code: 'reports.label', default: 'Reports'), reportsInstance.id])
redirect(action: "show", id: reportsInstance.id)
}
def delete(Long id) {
def reportsInstance = Reports.get(id)
if (!reportsInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'reports.label', default: 'Reports'), id])
redirect(action: "list")
return
}
try {
reportsInstance.delete(flush: true)
flash.message = message(code: 'default.deleted.message', args: [message(code: 'reports.label', default: 'Reports'), id])
redirect(action: "list")
}
catch (DataIntegrityViolationException e) {
flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'reports.label', default: 'Reports'), id])
redirect(action: "show", id: id)
}
}
}
step5: views it will create folioing gsp files

step6: run this Application o/p will be same like scaffolding
No comments:
Post a Comment