class Person {
String fullName
List telephones = []
static hasMany = [telephones : Telephone]
static constraints = {
fullName(size:3..50, blank:false, nullable:false)
}
}
然后是一个子类:
class SalesAdvisor extends Person{
Float comission //In percentage
Portfolio customerPortfolio
Inventory inventory
static constraints = {
comission(range:0..100, scale:2, nullable:false)
customerPortfolio(nullable:false)
inventory(nullable:false)
}
}
在SalesAdvisorController中,我保存SalesAdvisor实例:
def save = {
def portfolio = new Portfolio()
def inventory = new Inventory(name:'${params.fullName}Inventory', description:"${params.fullName}'s Inventory")
params.customerPortfolio = portfolio
params.inventory = inventory
def salesAdvisor = new SalesAdvisor(params)
if(!salesAdvisor.hasErrors() && salesAdvisor.save()){
log.info("New instance of SalesAdvisor saved.")
redirect(action:show, id:salesAdvisor.id)
}else{
log.error("There was an error saving the sales advisor.")
salesAdvisor.errors.allErrors.each{
println it.code
}
render(view:'create', model:[salesAdvisor:SalesAdvisor])
}
}
为了显示任何错误,在“创建”视图中,我有:
<g:hasErrors bean="${salesAdvisor}">
<div class="errors">
<g:renderErrors bean="${salesAdvisor}" as="list" />
</div>
</g:hasErrors>
验证似乎工作正常。但是,如果我为佣金字段提交一个字符串而不是一个浮点数,在日志中我可以看到“typeMismatch”,但是视图没有呈现任何内容!message.properties文件具有类型不匹配的默认条目。对于fullName字段也是一样,在日志中我可以看到“null”和“blank”错误,但是视图没有呈现任何内容。
我猜这更多的是视图的错,而不是控制器或域的错,因为单元测试的行为应该是这样的。