message
用途
从给出的错误代码,解决问题.通常用于配合"eachError".
示例
循环通过每个错误和输出的信息
<g:eachError bean="${book}">
<li><g:message error="${it}" /></li>
</g:eachError>
注意:经常被用来内置的 Grails 信息, 而不是用户的应用信息. 为用户应用信息,请使用代码参数.如下例所示.
为一个指定的code输出信息:
<g:message code="my.message.code" />
描述
属性
error
(可选) - 解决错误的消息. 被用于 Grails 消息.
code
(可选) - 解决消息的代码.常被用于用户自定义消息.
default
(可选) - 输出默认的消息或错误代码.这个属性不在messages.properties中.
args
(可选) - 当code被使用的时候,参数的值适用于该邮件.
encodeAs
(可选 - 0.6+) - 编解码器的名称.用来编解码html,javascript或url.
error
属性和 code
属性两者必需有一个. 消息与grails-app/i18n/messages.properties
捆绑,通过修改messages.properties
解决消息问题.
更多完整的例子, 输出自定义消息,参数和默认消息.也可以在你的controller中用下面的code:
flash.message = "book.delete.message"
flash.args = [ "The Stand" ]
flash.default = "book deleted"
在 messages.properties中指定:
book.delete.message="Book {0} deleted."
在视图中的指定:
<g:message code="${flash.message}" args="${flash.args}" default="${flash.default}"/>
结果输出 "Book The Stand deleted." 如果在messages.properties
中,命名错误或并没有指定,默认信息将输出 "book deleted".
来源
Show Source
def message = { attrs ->
def messageSource = grailsAttributes
.getApplicationContext()
.getBean("messageSource") def locale = RCU.getLocale(request)
def text if(attrs['error']) {
def error = attrs['error']
def message = messageSource.getMessage( error,
locale )
if(message) {
text = message
}
else {
text = error.code
}
}
if(attrs['code']) {
def code = attrs['code']
def args = attrs['args']
def defaultMessage = ( attrs['default'] != null ? attrs['default'] : code ) def message = messageSource.getMessage( code,
args == null ? null : args.toArray(),
defaultMessage,
locale )
if(message != null) {
text = message
}
else {
text = defaultMessage
}
}
if (text) {
out << (attrs.encodeAs ? text."encodeAs${attrs.encodeAs}"() : text)
}
}
// Maps out how Grails contraints map to Apache commons validators
static CONSTRAINT_TYPE_MAP = [ email : 'email',
creditCard : 'creditCard',
match : 'mask',
blank: 'required',
nullable: 'required',
maxSize: 'maxLength',
minSize: 'minLength',
range: 'intRange',
size: 'intRange',
length: 'maxLength,minLength' ]