领域类:
1.Race.groovy
2.Registration.groovy
3.Runner.groovy
控制器:
1.RaceController.groovy
2.RegistrationController.groovy
3.RunnerController.groovy
因为是内置数据库,所以每次重启服务器时,数据就丢失,这是grails内部机制,可以用以下办法在每次服务器启动时保存初始数据到内置数据库:
在grails-app/conf/BootStrap.groovy
1.Race.groovy
package com.rt
class Race {
String name
Date startDate
String city
String state
BigDecimal distance
BigDecimal cost
Integer maxRunners=100000
static hasMany=[registrations:Registration]
static constraints = {
name(blank:false,maxSize:50)
startDate(validator:{return(it>new Date())})
city()
state(inList:["GA","NC","SC","VA"])
distance(min:0.0)
cost(min:0.0,max:100.0)
maxRunners(min:0,max:1000000)
}
BigDecimal inMiles(){
return distance*0.6214
}
@Override
public String toString() {
return "${name},${startDate.format('yyyy/MM/dd')}"
}
}
2.Registration.groovy
package com.rt
class Registration {
Boolean paid
Date dateCreated
static belongsTo = [race:Race,runner:Runner]
static constraints = {
race()
runner()
paid()
dateCreated()
}
@Override
public String toString() {
return "${race}:${runner}"
}
}
3.Runner.groovy
package com.rt
import java.util.Date;
class Runner {
String firstName
String lastName
Date dateOfBirth
String gender
String address
String city
String state
String zipcode
String email
static hasMany=[registrations:Registration]
static constraints = {
firstName(blank:false)
lastName(blank:false)
dateOfBirth()
gender(inList:['男','女'])
address()
city()
state()
zipcode()
email(email:true)
}
@Override
public String toString() {
return "${firstName},${lastName}(${email}"
}
}
控制器:
1.RaceController.groovy
package com.rt
class RaceController {
def scaffold=Race
// def index = {
// render "hello world"
// }
}
2.RegistrationController.groovy
package com.rt
class RegistrationController {
def scaffold=true
// def index = { }
}
3.RunnerController.groovy
package com.rt
class RunnerController {
def scaffold=true
}
因为是内置数据库,所以每次重启服务器时,数据就丢失,这是grails内部机制,可以用以下办法在每次服务器启动时保存初始数据到内置数据库:
在grails-app/conf/BootStrap.groovy
import com.rt.Race
import com.rt.Registration
import com.rt.Runner
import grails.util.GrailsUtil;
class BootStrap {
def init = { servletContext ->
switch(GrailsUtil.environment){
case "development":
def jane=new Runner(
firstName:'三',
lastName:'张',
dateOfBirth:(new Date()-365*30),
gender:'男',
address:'地址',
city:'hz',
state:'NC',
zipcode:'123456',
email:'jane@163.com'
)
jane.save()
jane.errors.each {
println it
}
def trot=new Race(
name:'500长跑',
startDate:(new Date()+90),
city:'HZ',
state:'NC',
distance:500,
cost:20.0,
maxRunners:350
)
trot.save()
if(trot.hasErrors()){
println trot.errors
}
def reg=new Registration(
paid:false,
runner:jane,
race:trot
)
reg.save()
reg.errors.each {
println it
}
break
}
}
def destroy = {
}
}