如何在spring mvc中使用带有freemarker的消息?

Posted

技术标签:

【中文标题】如何在spring mvc中使用带有freemarker的消息?【英文标题】:how to use messages with freemarker in spring mvc? 【发布时间】:2011-03-10 10:45:08 【问题描述】:

在 .jsp 中我会使用:

<fmt:message key="welcome.title"/>

显示来自我的 messages.properties 文件的消息。

我将如何使用 freemarker 做到这一点?

【问题讨论】:

【参考方案1】:

导入 Spring 宏

<#import "/spring.ftl" as spring/>

然后

<@spring.message "yourMessageKeyGoesHere"/>

但是你需要注册ResourceBundleMessageSource

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages"/>
</bean>

记住 MessageSource 必须调用 messageSource

【讨论】:

我记得,您可以默认导入模板。 @Blankman:你可以参考 Freemarker 文档。 不错的答案。如果属性文件不在类路径中,请使用 ReloadableResourceBundleMessageSource。 它如何决定使用哪个属性文件(例如 Locale)? 对我不起作用。返回:“找不到名称“spring”的模板。”【参考方案2】:

@布兰克曼

不,您不必在每个模板中手动导入。您可以在 freemarker 设置中设置 auto_import 属性,如下所示。

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
   ...

   <property name="freemarkerSettings">
        <props>
            <prop key="auto_import">spring.ftl as spring</prop>
        </props>
   </property>
</bean>

【讨论】:

我通过自动导入对 spring.ftl 进行了同样的尝试,它给出了java.io.FileNotFoundException: Template spring.ftl not found 改成/spring.ftl /spring.ftl as spring【参考方案3】:

其他都是很好的答案。为那些使用它的人提供 java config 作为示例。

 @Bean(name = "freemarkerConfig")
public FreeMarkerConfigurer freemarkerConfig() 
    FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
    configurer.setTemplateLoaderPaths("/WEB-INF/views/", 'classpath:/templates');
    Map<String, Object> map = new HashMap<>();
    map.put("xml_escape", new XmlEscape());
    configurer.setFreemarkerVariables(map)
    def settings = new Properties()
    settings['auto_import']  =  'spring.ftl as spring,layout/application.ftl as l,/macros/meh.ftl as meh'
    configurer.setFreemarkerSettings(settings)
    log.info "returning freemarker config"
    return configurer;

【讨论】:

以上是关于如何在spring mvc中使用带有freemarker的消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 REST API 中使用带有 spring mvc 的版本?

如何使用 Spring Ldap Authentication 和 spring mvc 对用户进行身份验证

带有 MVC 的 Spring 3 JSON

spring mvc中如何过滤form提交数据中的空格?

使用 Spring MVC 时如何在 Freemarker 视图中设置内容类型?

如何将 Spring MVC 控制器映射到带有和不带有斜杠的 uri?