how to use messages with freemarker in spring mvc?

前端 未结 3 1334
攒了一身酷
攒了一身酷 2020-12-14 18:13

In a .jsp I would use:


to display a message from my messages.properties file.

How would

相关标签:
3条回答
  • 2020-12-14 18:43

    @Blankman

    No, you don't have to import this manually in each template. You can set an auto_import property in your freemarker settings as showed below.

    <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>
    
    0 讨论(0)
  • 2020-12-14 18:44

    Others are fine answers. Providing java config as example for those that use that.

     @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;
    }
    
    0 讨论(0)
  • 2020-12-14 18:48

    Import Spring Macro

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

    Then

    <@spring.message "yourMessageKeyGoesHere"/>
    

    But you need to register ResourceBundleMessageSource

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

    Keep in mind MessageSource must be called messageSource

    0 讨论(0)
提交回复
热议问题