gpt4 book ai didi

grails - 覆盖 Grails 错误消息以格式化日期和数字

转载 作者:行者123 更新时间:2023-12-02 14:08:32 25 4
gpt4 key购买 nike

我创建了一个带有 Double 字段的域。当验证发生时,它会抛出带有大小值的错误消息,并用逗号显示数字。以下是详细内容

Groovy 类

class Quote {

String content;
Double size;

static constraints = {
content(maxSize:1000, blank:false)
size(min: 0.00D, max:999.99D)
}
}

输入值“11111”,得到错误“大小 11,111 超出限制”。我在messages.properties 中添加了属性键/值对。

在这里,我想在没有逗号的情况下返回消息。我的主要目标是根据我的要求获取 key 并格式化返回的消息。我需要这个,因为我有其他需要转换的字段。例如,日期已验证,但在显示错误时需要将公历日期转换为伊斯兰日期并显示给用户。

有谁知道我是否可以做些什么来完成这项工作。

我已经尝试了 http://ishanf.tumblr.com/post/434379583/custom-property-editor-for-grails 中提供的解决方案但这没有用。
我也尝试过修改消息值,但是在我的日期问题的情况下这并不灵活。例如,对于键值对,我可以使用 {2, date, mm/dd/yyyy} 而不是使用 {2} 作为占位符,但对于伊斯兰日期,我想以不同的方式格式化和显示内容。

另外,请注意我已经为我的应用程序的默认日期格式创建了一个单独的键。

将不胜感激。

最佳答案

在 grails 中,约束的返回是一个已经翻译的字符串。

您可以创建一个 taglib 来格式化,或增强

另一种选择是自定义验证器。自定义验证器在失败时可以返回 false 或 key。

例如,在您的域类中,要验证一个字段:

myDateField validator: {val, obj -> obj.myShinyDateValidatorMethod(val) }

private myShinyDateValidatorMethod() {
if (isNotValidDate(val) {
return [the_message_key, val.formatedAsYouWand]
}
}

并且,在您的属性文件中,您必须定义 key :
the_message_key=This date: {3} is not valid

这里的技巧是,在验证器的返回中,第一个字符串是键,其余的是该键的参数,但是 grails 已经使用 {0}、{1}、{2} 占位符来表示 className、fieldName 和 value,并且您传递的第一个参数将用作 {3} 占位符。

希望这可以帮助

关于grails - 覆盖 Grails 错误消息以格式化日期和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12072607/

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