2012-07-26 46 views
2

顯然簡化了,但我試圖建立一個字符串,我會傳遞到另一個messages.properties條目。比如,也許我有一個看起來像這樣的條目:看起來像這個在返回消息條目字符串和參數之前,我可以抓取Grails消息字符串嗎?

someField.sillyError.good=good 
someField.sillyError.bad=bad 
someField.validation.error=This has been a [{3}] morning 

隨着驗證:

static constraints = { 
    someField(nullable: false, blank: false, validator: { val, obj -> 
     def someOtherEntry = g.message(code: 'someField.sillyError.' + val) 
     return ['someField.validation.error', someOtherEntry] 
    } 
} 

g.message()調用不工作,我似乎無法使用其他任何事情都可以得到它。

+0

可能的重複:http://stackoverflow.com/questions/2814771/grails-getting-a-message-value-from-controller – Kelly 2012-07-26 00:50:35

回答

1

我有類似的情況,我使用下面的代碼。

default.mandatory.message={0} is Mandatory 
item.error.message=Item #{0} - {1} 



public setItemFieldMandatoryError(FormXItem item, String field, String defaultMessage) { 
    def messageSource = Holders.applicationContext.messageSource 
    def errorMessage = messageSource.getMessage("default.mandatory.message", [field] as Object[], LocaleContextHolder.getLocale()) 
    item.errors.rejectValue(field, "formXItem.error.message", [formxItem.itemNumber, errorMessage] as Object[], defaultMessage) 
} 
+0

因此,問題是在限制內messageSource bean不可用。 – 2012-07-27 22:00:32

0

我能夠做的來完成我希望以下:

messages.properties

someField.sillyError.good=good 
someField.sillyError.bad=bad 
someField.validation.error=This has been a [{3}] morning 

someCommand

def messageSource 
static constraints = { 
    someField(nullable: false, blank: false, validator: { val, obj -> 
     def someOtherEntry = obj.messageSource.getMessage('someField.sillyError' + val, null, Locale.ENGLISH) 
     return ['someField.validation.error', someOtherEntry] 
    } 
} 

,你可以注入bean在命令對象級別,然後從obj VAR中調用它在約束範圍內。來自同事,所以我不能信用:P