如果消息屬性代碼確實存在或不存在,我想分支。如果message.properties代碼存在,我該如何分支
<g:if test="${message(code: 'default.code.foo')}">
true
</g:if><g:else>
false
</g:else>
應該回答true
如果有一個名爲default.code.foo
和false
如果沒有消息屬性。
它失敗了,因爲它在沒有屬性的情況下回答代碼。
如果消息屬性代碼確實存在或不存在,我想分支。如果message.properties代碼存在,我該如何分支
<g:if test="${message(code: 'default.code.foo')}">
true
</g:if><g:else>
false
</g:else>
應該回答true
如果有一個名爲default.code.foo
和false
如果沒有消息屬性。
它失敗了,因爲它在沒有屬性的情況下回答代碼。
你能不能提供一個默認的,這是一個空字符串?
<g:if test="${message(code: 'default.code.foo', default:'')}">
true
</g:if><g:else>
false
</g:else>
這將等同於假Groovy's truth
那麼你爲什麼不測試返回的字符串是否是代碼本身?
<g:if test="${message(code: 'default.code.foo') == 'default.code.foo'}">
true
</g:if><g:else>
false
</g:else>
如果你需要在幾個地方這樣做,並希望使代碼更簡潔一點,那麼把這個邏輯放在標籤庫中。
class MsgTagLib {
static namespace = 'msg'
def messageSource
private static final NO_ARGS = [].toArray();
def exists = {attrs ->
try {
messageSource.getMessage(attrs.code, NO_ARGS, Locale.default)
out << true
} catch (NoSuchMessageException e) {
out << false
}
}
}
然後,您可以使用調用這個在GSP:
<msg:exists code="default.code.foo"/>
注意
exists
標籤在它上面的表格不支持參數的消息下,有時是遠遠容易看到的解決方案... :)確保解決它! – skurt 2010-06-02 13:34:54
+1爲巧妙 – 2010-06-02 13:44:14
我相信你也可以做類似 「$ {g.message(code:'specific.code.foo',default:''}?:g.message(code:'default.code .foo'}「 作爲替代。 – 2014-03-31 16:43:56