西里尔文本不会显示在错误页面上

时间:2012-03-24 21:44:23

标签: java spring tomcat internationalization

我的网站应该以两种语言显示:Eng和Ru。 它是Tomcat6,Java6,Spring3,Tiles2。 网站确实以两种语言显示文本。但是,如果出现错误(我已设置自定义错误页面),俄语文本中的错误页面将显示为????????? (一堆?)

文本位于属性文件中。想法常规文本在一个文件中,错误消息在另一个文件中。我检查了 - 两个文件都使用相同的编码保存。

在我的web.xml中我确实有这个:

<filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

和错误页面在web.xml中定义为:

<error-page>
    <error-code>400</error-code>
    <location>/Exception</location>
</error-page>

<error-page>
    <error-code>403</error-code>
    <location>/Exception</location>
</error-page>

<error-page>
    <error-code>404</error-code>
    <location>/404</location>
</error-page>

<error-page>
    <error-code>500</error-code>
    <location>/Exception</location>
</error-page>

<error-page>
    <error-code>503</error-code>
    <location>/Exception</location>
</error-page>

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/Exception</location>
</error-page>

在myApp-servlet.xml中我确实有这个

<bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <!-- <property name="basename" value="classpath:text" /> -->

        <property name="basenames">
            <list>
                <value>classpath:text</value>
                <value>classpath:errors</value>
            </list>
        </property>
        <property name="defaultEncoding" value="UTF-8" />
        <property name="fileEncodings" value="UTF-8" />
    </bean>

同样,整个网站确实正确显示俄语文本。这是错误页面没有。

我是否需要为错误页面指定一个单独的设置?或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

filter-mapping中有一个名为dispatcher的参数。您应该将以下内容添加到过滤器映射中:

<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>