当前位置:   article > 正文

从message.properties获取消息代码列表

message.properties

通常,通过键(即消息代码)从消息属性中获取消息,如果我们想选择多个消息属性(如列表),该怎么办。 要从message.properties获取选择消息代码的列表,我们需要自定义messageSource bean。 为此,让我们创建一个“ CustomizedPluginAwareResourceBundleMessageSource”类,该类应该扩展“ PluginAwareResourceBundleMessageSource”类。

要获取所有属性,我们将使用getMergedProperties()。

  1. import org.codehaus.groovy.grails.context.support.PluginAwareResourceBundleMessageSource
  2. class CustomisedPluginAwareResourceBundleMessageSource extends PluginAwareResourceBundleMessageSource {
  3. List listMessageCodes(Locale locale, String lookupMessageCode) {
  4. Properties properties = getMergedProperties(locale).properties
  5. List listOfCodes = []
  6. properties.each {
  7. if (it.key.toString().matches(/^[\w.]*${lookupMessageCode}[.\w]*$/))
  8. listOfCodes.add(it.key)
  9. }
  10. return listOfCodes
  11. }
  12. }

在这里,“ listMessageCodes()”具有两个参数,第一个是我们正在查找的“语言环境”,第二个是我们正在搜索的“字符串”; 并返回包含该字符串的代码列表。

接下来,我们需要在资源文件中重新定义“ messageSource” bean:

  1. import com.ig.demoApp.CustomisedPluginAwareResourceBundleMessageSource
  2. beans = {
  3. messageSource(CustomisedPluginAwareResourceBundleMessageSource) {
  4. basenames = "WEB-INF/grails-app/i18n/messages"
  5. }
  6. }

而已!

我们需要做的就是调用方法“ listMessageCodes()”。 这是一个小例子。

下面提到的是message.properties中的消息代码示例:

  1. fruit.orange.label=Orange
  2. fruit.black.label=Black Grape
  3. fruit.red.label=Red Apple
  4. fruit.green.label=Green Apple
  5. square.black.label=Black Square
  6. square.yellow.label=yellow Square
  7. square.red.label=Pink Square
  8. circle.violet.label=Violet Circle
  9. circle.magenta.label=Magenta Circle
  10. circle.olive.label=Olive Circle

和像这样的控制器:

  1. package demoapp
  2. class DemoController {
  3. def messageSource
  4. def show() {
  5. [fruits: messageSource.listMessageCodes(request.locale, "fruit"),
  6. squares: messageSource.listMessageCodes(request.locale, "square"),
  7. circles: messageSource.listMessageCodes(request.locale, "circle"),
  8. blackColorItems:messageSource.listMessageCodes(request.locale, "black"),
  9. redColorItems:messageSource.listMessageCodes(request.locale, "red")]
  10. }
  11. }

一个gsp:

  1. <g:form>
  2. <p>Available Fruits</p>
  3. <g:each in="${fruits}" var="fruit">
  4. <span>
  5. <input type="radio" name="fruit">
  6. <label><g:message code="${fruit}"/></label>
  7. </span>
  8. </g:each>
  9. <p>Available Squares</p>
  10. <g:each in="${squares}" var="square">
  11. <span>
  12. <input type="radio" name="square">
  13. <label><g:message code="${square}"/></label>
  14. </span>
  15. </g:each>
  16. <p>Available Circles</p>
  17. <g:each in="${circles}" var="circle">
  18. <span>
  19. <input type="radio" name="circle">
  20. <label><g:message code="${circle}"/></label>
  21. </span>
  22. </g:each>
  23. <p>Available Black Color Items</p>
  24. <g:each in="${blackColorItems}" var="blackColorItem">
  25. <span>
  26. <input type="radio" name="blackColorItem">
  27. <label><g:message code="${blackColorItem}"/></label>
  28. </span>
  29. </g:each>
  30. <p>Available Red Color Items</p>
  31. <g:each in="${redColorItems}" var="redColorItem">
  32. <span>
  33. <input type="radio" name="redColorItem">
  34. <label><g:message code="${redColorItem}"/></label>
  35. </span>
  36. </g:each>
  37. </g:form>

而已 :)

  • 您也可以在此处找到演示。

翻译自: https://www.javacodegeeks.com/2015/02/fetching-list-of-message-codes-from-message-properties.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/543512
推荐阅读
相关标签
  

闽ICP备14008679号