Grails - Tag - message

Tag - message

Description

Resolves a message from the given code or error. Normally used in conjunction with "eachError". One of either the "error" attribute or the "code" attribute is required. Messages are resolved from the "grails-app/i18n/messages.properties" resource bundle. See also Internationalization.

Parameters

  • error (optional) - The error to resolve the message for. Used for built-in Grails messages.
  • code (optional) - The code to resolve the message for. Used for custom application messages.
  • default (optional) - The default message to output if the error or code cannot be found in messages.properties.
  • args (optional) - A list of argument values to apply to the message, when code is used.
  • encodeAs (optional - 0.6+) - The name of a codec to apply, i.e. HTML, JavaScript, URL etc

Examples

Loop through each error and output the message:

<g:eachError bean="${book}">
    <li><g:message error="${it}" /></li>
</g:eachError>
Note that this is typically used for built-in Grails messages, rather than user application messages. For user application messages, use the code parameter, as illustrated below.

Output a message for a specific known code:

<g:message code="my.message.code" />
For a more complex example, to output your own message with parameters and a default message, you might use the following code from your controller:
flash.message = "book.delete.message"
flash.args = [ "stupidbook" ]
flash.defaultMessage = "book deleted"
In the above, don't try to rename flash.defaultMsg as "flash.default". You'll get parser errors because default is a reserved word (Note that on the other hand, you can specify it as flash['default'] because then you are using it as a string key). You would then specify the following in messages.properties:
book.delete.message="Book {0} deleted."
and specify the following from your view:
<g:message code="${flash.message}" args="${flash.args}" default="${flash.defaultMsg}"/>
which would result in the output "Book stupidbook deleted." If you had misnamed the message or not specified it in messages.properties, your default message of "book deleted" would be output.

You can also use this to access messages in the resource bundle (messages.properties file) from a controller.

def message = g.message(code:"book.delete.message")