Grails: Call a localization message from within another message

Viewed 301

Coming from Struts/XWorks I was able to do something like this

Messages.properties

myMessage.invalid.fieldvalue=Invalid input for $'{'getText("{0}")'}'
email.label=Email Address

Application Code

getText("myMessage.invalid.fieldvalue",new String[] {"email.label"})
Output: Invalid input for Email Address

So basically the parameter I am passing into a message is actually the code for another message and I want to render them both together.

I can't seem to find a way to do this with Grails/Spring messaging. Is this possible and if so how?

EDIT: To more clearly show one of the reason I am asking for this take this example.

Lets say I have 5 Domain classes with the property emailAddress

To validate for NULL I would have to do this

myClass1.emailAddress.nullable=Email Address cannot be NULL
myClass2.emailAddress.nullable=Email Address cannot be NULL
myClass3.emailAddress.nullable=Email Address cannot be NULL
myClass4.emailAddress.nullable=Email Address cannot be NULL
myClass5.emailAddress.nullable=Email Address cannot be NULL

What I want to be able to do is simply the messaging by overriding the default validation message as such

OLD: default.null.message=Property [{0}] of class [{1}] cannot be null

NEW: default.null.message=getMessage({0}) cannot be null
emailAddress=Email Address

So now anytime any class has a property called emailAddress and it validates as NULL I will get the message Email Address cannot be null. There is no need to have 5 messages that basically say the same exact thing. If I had another class with the property emailAddress then its already handled and I dont have to copy and paste a 6th line.

Anytime I have classes with shared property names, all I have to do is add just add a single line for each property that will be applied to all classes

sharedProp1= Shared property 1
sharedProp2= Shared property 2
2 Answers
Related