Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringMVC中使用带有freemarker的消息?_Java_Spring_Spring Mvc_Freemarker - Fatal编程技术网

Java 如何在SpringMVC中使用带有freemarker的消息?

Java 如何在SpringMVC中使用带有freemarker的消息?,java,spring,spring-mvc,freemarker,Java,Spring,Spring Mvc,Freemarker,在.jsp中,我将使用: <fmt:message key="welcome.title"/> 显示my messages.properties文件中的消息 如何使用freemarker执行此操作?导入Spring宏 <#import "/spring.ftl" as spring/> 然后 但是您需要注册ResourceBundleMessageSource <bean id="messageSource" class="org.springfra

在.jsp中,我将使用:

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

显示my messages.properties文件中的消息

如何使用freemarker执行此操作?

导入Spring宏

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

然后


但是您需要注册ResourceBundleMessageSource

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

请记住MessageSource必须被称为MessageSource

@Blankman

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="messages"/>
</bean>
不,您不必在每个模板中手动导入。您可以在freemarker设置中设置自动导入属性,如下所示

<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作为spring

其他答案都很好。提供java配置作为使用该配置的示例

 @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;
}
@Bean(name=“freemarkerConfig”)
public freemarkerconfiguer freemarkerConfig(){
FreeMarkerconfiguer configurer=新的FreeMarkerconfiguer();
settemplateloaderpath(“/WEB-INF/views/”,“classpath:/templates”);
Map Map=newhashmap();
put(“xml_escape”,新的xmlscape());
configurer.setFreemarkerVariables(映射)
def设置=新属性()
设置['auto_import']='spring.ftl作为spring,layout/application.ftl作为l,/macros/meh.ftl作为meh'
configurer.setFreemarkerSettings(设置)
log.info“正在返回freemarker配置”
返回配置器;
}

我记得,默认情况下可以导入模板@布兰克曼:你可以参考Freemarker文档。回答得不错。如果属性文件不在类路径上,请使用ReloadableResourceBundleMessageSource。它如何决定将使用哪个属性文件(例如区域设置)?对我不适用。返回:“未找到名称为“spring”的模板”。我通过自动导入尝试了spring.ftl的相同操作,它给出了
java.io.FileNotFoundException:Template spring.ftl not found
更改为/spring.ftl/spring.ftl as spring