2012-02-10 1 views
2

Google의 오류 페이지를 제외하고 현지화가 잘 작동하는 이상한 문제가 있습니다.Tomcat이 오류 페이지를 처리 ​​할 때 로케일이 없습니까?

Stripes 프레임 워크, 리소스 번들 및 JSTL 태그를 사용하여 내 페이지를 현지화합니다. 로켈은 Stripes 프레임 워크에 의해 결정됩니다. 줄무늬 documentation에 따르면

줄무늬하는 것은()는 선택한 로케일을 돌려이 HttpServletRequestWrapper에 request.getLocale에 호출을()와 request.getLocales 사용합니다. 즉, Stripes는 올바른 로케일을 다시 결정하지 않고 사용할뿐만 아니라 request.getLocales를 사용하는 다른 지역화 도구도 올바른 로케일을 기본값으로 사용해야합니다. 이것은 JSTL fmt를 포함합니다 : * 태그 - 멋지죠?

이 404 또는 500 오류가 web.xml 파일에 다음과 같이 구성되어 우리의 오류 페이지에 지시하는 발생하는 경우를 제외하고 모든 곳에서 잘 작동 : 나는 오류에 직접 검색하는 경우

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

페이지에서 현지화가 잘 작동합니다.

http://localhost:8080/error.jsp

을하지만 스페인어 언어를 설정 한 경우 다음로 이동합니다 : 이미 스페인어로 언어를 설정 한 경우 예를 들어,이 URL로 이동, 페이지가 스페인어로 나타납니다

http://localhost:8080/this-page-does-not-exist-create-a-404-error

동일한 오류 페이지가 나타나지만 영어로 렌더링됩니다.

왜 그런가요? 어떻게 수정합니까? 나는 아무 결과없이 모든 것을 수색했다!

필자는 request.getLocale()을 수동으로 확인하려고 노력했지만 en_US로 설정되었습니다.

로캘을 설정하는 코드에서 "lang"과 "country"라는 일부 세션 특성도 설정합니다.

해결 방법으로 이러한 특성을 읽고 로캘을 재구성 할 수 있음을 발견했습니다. 그러나 이것이 왜 처음에 발생하는지 알고 싶습니다.

+0

정말요? 아무도 모른다. – JBCP

답변

1

줄무늬가 로캘 설정을 처리했지만 오류 페이지가 줄무늬 디스패처를 통과하지 못하는 것으로 나타났습니다. 해결책은 아래와 같은 오류 줄을 추가하는 것이 었습니다.

<filter-mapping> 
    <filter-name>StripesFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <servlet-name>StripesDispatcher</servlet-name> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
</filter-mapping> 
0

오류 페이지가 줄무늬 필터를 거치지 않았을 수 있습니다. 404 페이지에서 줄무늬 페이지를 리디렉션하십시오. 그게 문제를 해결할 수 있습니다.

+0

Stripes를 처음 접해 보니 의미가 있습니다. 어떻게해야합니까? 여기 내 web.xml 파일의 설정, 그래서 나는 당신이 옳다고 생각합니다 : error2.jsp''로 \t \t \t 500 \t \t /error.jsp \t JBCP

+0

복사'error.jsp'은. 변경 '오류.jsp' 콘텐츠를 <% @page language = "java"contentType = "text/html; charset = UTF-8"pageEncoding = "utf-8" %><% 으로 변환합니다. response.setHeader ("Location", "/" error2.jsp "); response.setHeader ("Connection", "close"); %>' – hkn

관련 문제