我的网站应该以两种语言显示: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>
同样,整个网站确实正确显示俄语文本。这是错误页面没有。
我是否需要为错误页面指定一个单独的设置?或者我错过了什么?
答案 0 :(得分:1)
filter-mapping中有一个名为dispatcher的参数。您应该将以下内容添加到过滤器映射中:
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>