使用Spring框架在Velocity中将文件夹添加到类路径

时间:2011-11-22 21:03:01

标签: apache spring internationalization velocity

如何将整个文件夹添加到Velocity并将内部文件用作资源包?

目前在我的velocity.xml中,我有这段代码:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="parentMessageSource">
      <ref bean="globMessageSource"/>
    </property>
    <property name="basenames">
      <list> 
        <value>classpath:/WEB-INF/i18n</value>
        <value>/WEB-INF/templates/velocity/my_vm_template</value>
   </list> 
</bean>

我需要将i18n文件夹添加到类路径中,以便toolbox.xml中的VelocityTools 1.4版可以看到它包含的文件:

 <tool>
   <key>test</key>
   <scope>request</scope>
   <class>org.apache.velocity.tools.generic.ResourceTool</class>
   <parameter name="bundles" value="i18n.ss_messages"/>
   <parameter name="locale" value="en_US"/>
 </tool>

代码给我一条错误消息:“java.util.MissingResourceException:找不到基本名称的包i18n.ss_messages,locale en_US”

此问题与VelocityTools error - "java.util.MissingResourceException: Can't find bundle for base name WEB-INF.conf.resources.ss_messages, locale en_US"

有关

很抱歉,如果这是一个愚蠢的问题,但我找不到任何地方描述如何将整个文件夹添加到类路径并作为捆绑包提供,以便它可以支持Velocity模板本地化。

重要提示!! 如果我将ss_messages_bg_BG.properties和ss_messages_en_US.properties文件放在/ WEB-INF / classes / i18n中,那么它可以正常工作,但我想将它们放在不同的文件夹中在/ WEB-INF / templates / i18n中。我该怎么做?

1 个答案:

答案 0 :(得分:0)

你使用maven吗?您可以告诉maven将该目录用作资源:

        <resource>
            <!-- Velocity requires to be in classpath -->
            <directory>src/main/webapp/WEB-INF/i8n</directory>
            <filtering>true</filtering>
        </resource>