Grails - 如何从GSP中访问属性文件

3
我需要从GSP文件访问我的属性文件以获取其中一个值。我尝试在网络上查找示例,但没有找到。这是我创建的文件,而不是Grails。
谢谢!

3
在GSP页面中访问文件而不是在控制器中访问文件,是否有原因? - lukelazarovic
不清楚你真正想做什么。如果你想检索值以便在页面中呈现它,那么消息标签将起作用(请参见下面的答案)。如果你试图为其他目的检索该值,则该目的可能决定了最好的做法。 - Jeff Scott Brown
这是我自己创建的一个新的.properties文件,它位于web-app文件夹中,我只需要从中读取一些属性。 - roeygol
4个回答

2

在grails控制器和gsp文件中,您可以使用GrailsApplication对象访问您的yml文件属性:

${grailsApplication.config.get('YOUR_PROPERTY_NAME)}

1

0

如果你正在读取简单属性,那么你想要的似乎是外部配置

如果你真的需要在GSP中使用它(但不建议从GSP中使用):

${Holders.config.myPropertyKey}

通常在GSP中放置那样的代码是一个不好的主意。 - Jeff Scott Brown
这对我不起作用。顺便问一下@JeffScottBrown,为什么这是个坏主意?...将其放在i18文件夹下是否有任何区别(??) - Rafael

0
如果属性文件位于grails-app/i18n/下(它可以是您自己的属性文件,不必是默认的属性文件之一),那么您可以在GSP中使用message标签访问属性文件中的属性值。请参见http://grails.org/doc/latest/ref/Tags/message.html

不是的。它在 web-app 文件夹下,是我创建的一个新文件。 - roeygol
你没有提供足够的信息来确定如何解决这个问题。如果这些值需要从属性文件中检索,然后在GSP中呈现,请将属性文件移动到i18n目录并使用message标记。如果这些值将用于其他目的,了解该目的将决定正确的解决方案。 - Jeff Scott Brown
为了清晰起见,您可以在 i18n 目录下创建自己的属性文件,只要名称以 .properties 结尾,Grails 就能找到它们。 - Jeff Scott Brown
我已经创建了它。但是我不明白当我有自己的文件时,如何使用<g:message>标签。 我该如何在标签中指定我的新属性文件名? - roeygol
您在标签中没有指定属性文件名。属性文件的名称并不重要。如果您定义了grails-app/conf/i18n/stackoverflow.properties,并且在该文件中有foo.bar=Winning,则在GSP中使用code="foo.bar"调用消息标记。您从未指定文件的名称。所有这些属性文件都会加载并配置在messageSource bean中。 - Jeff Scott Brown
这样,在 stackoverflow.properties 文件中,你可以写上 "foo.bar=Winning",在 stackoverflow_es.properties 文件中,你可以写上 "foo.bar=Ganar"。在 GSP 中,你只需要使用 code="foo.bar" 调用 message 标签,本地化就能生效。即使你不关心本地化,同样的过程也适用。只是不要创建像 stackoverflow_es.properties 这样的本地化文件。 - Jeff Scott Brown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接