gpt4 book ai didi

grails - 有什么方法可以将Grails的message.properties文件中的消息链接在一起?

转载 作者:行者123 更新时间:2023-12-02 14:12:53 24 4
gpt4 key购买 nike

在Grails中,有一个message.properties文件。在此文件消息中定义如下:

exampleClass.fieldOne.label=Field One

otherExampleClass.fieldOne.label=Field One

我希望能够使用两种消息,即使它们在文本上是相同的。我想这样定义它们:
exampleClass.fieldOne.label=Field One

otherExampleClass.fieldOne.label=${message(code: 'exampleClass.fieldOne.label')}

...但是只要调用 otherExampleClass.fieldOne.label就会返回字符串 ${message(code: 'exampleClass.fieldOne.label')}而不是所需的字符串 Field One

最佳答案

在message.properties中,我认为您无法做到这一点,但是也许可以通过约定并修改Grails的模板来实现。所以我的想法是:

为您的消息定义一个约定(例如,使用一些特殊字符初始化消息)

exempleClass.fieldOne.label=FieldOne
otherExampleClass.fieldOne.label=#exempleClass.fieldOne.label

创建一个TagLib来处理消息
class MyTagLib {
static namespace = "my"
def inheritedMessage = { attrs, body ->
String message = g.message(attrs)
if(message.startsWith("#")) {
//get the other message...
}
out << message
}
}

最后是 install templates,并将 <g:message/>更改为 <my:inheritedMessage/>或您称之为的其他名称。

对于第2步,另一种方法是重写 g.message(),其好处是不需要第3步,并使修改可用于您应用的所有部分。缺点是必须对其进行良好的记录和分发,否则可能会引起其他开发人员的困惑。

编辑

为了涵盖所有消息,我认为更好的方法是定制Grails使用的messageResource。 Here是一个涵盖如何使用Spring来从数据库获取消息的问题,这可能是一个起点。 here是一个问题,显示了如何在Grails中替换bean。

关于grails - 有什么方法可以将Grails的message.properties文件中的消息链接在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12162791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com