gpt4 book ai didi

View 中未呈现验证错误

转载 作者:行者123 更新时间:2023-12-02 14:38:54 29 4
gpt4 key购买 nike

我很难弄清楚这个验证问题。我有一个父域类定义如下:

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])
}
}

为了显示任何错误,在“创建” View 中我有:
<g:hasErrors bean="${salesAdvisor}">
<div class="errors">
<g:renderErrors bean="${salesAdvisor}" as="list" />
</div>
</g:hasErrors>

验证似乎工作正常。但是,如果我为佣金字段提交字符串而不是浮点数,则在日志中我可以看到“typeMismatch”,但 View 没有呈现任何内容! message.properties 文件具有 typeMismatch 的默认条目。 fullName 字段也是如此,在日志中我可以看到“可为空”和“空白”错误,但 View 没有呈现任何内容。

我猜这更多的是 View 的错误而不是 Controller 或域,因为单元测试的行为应该如此。

最佳答案

我会说问题是您的模型传递代码中的一个简单的错字:

render(view:'create', model:[salesAdvisor:SalesAdvisor])

(注意大写的 SalesAdvisor 值)。尝试
render(view:'create', model:[salesAdvisor:salesAdvisor])

附带说明一下,您的 Inventory 构造代码中有一个错误:
name:'${params.fullName}Inventory'

您应该在此处使用双引号 (GString)。

关于 View 中未呈现验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025265/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com