2012-02-10 8 views
2

ローカライゼーションがうまくいく、奇妙な問題がありますが、私たちのエラーページを除きます。Tomcatがエラーページを処理するとき、ロケールはありませんか?

私はStripesフレームワーク、リソースバンドル、およびJSTLタグを使用してページをローカライズしています。ロケールはStripesフレームワークによって決定されます。ストライプdocumentationによると:

ストライプはrequest.getLocale()とrequest.getLocales(への呼び出しを行うためにHttpServletRequestWrapperクラスを使用しています)のみ選択したロケールを返します。これは、Stripesが正しいロケールを再決定することなく使用するだけでなく、request.getLocalesに依存する他のローカリゼーションツールも、デフォルトで正しいロケールにする必要があることを意味します。これにはJSTLのfmt:*タグも含まれています。

これは、web.xmlに次のように構成された当社のエラーページに指示され、404または500エラーが発生した場合を除き、どこでも素晴らしい作品:

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

私はエラーを直接参照する場合ページ、ローカリゼーションは正常に動作します。私はすでにスペイン語に言語を設定した場合たとえば、このURLを参照し、ページがスペイン語で表示されます。

http://localhost:8080/error.jsp

しかし、私はスペイン語に言語を設定し、その後に参照する場合:

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

同じエラーページが表示されますが、英語で表示されます。

なぜですか、どうすれば修正できますか?私は何の結果も得ずに検索しました!

私はrequest.getLocale()を手動でチェックしようとしましたが、en_USに設定されています。

ロケールを設定するコードでは、いくつかのセッション属性 "lang"と "country"も設定します。

回避策として、これらの属性を読み取り、ロケールを再構築できることがわかりましたが、なぜこれが最初に起こっているのかを知りたいと思います。

+0

本当に?誰も考えがありませんか? – JBCP

答えて

1

Stripesがロケールの設定を処理していたが、エラーページがStripes Dispatcherを通過していないということが判明した。解決策は以下のエラー行を追加することでした:

<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ページからStripesページをリダイレクトしようとします。これで問題が解決する可能性があります。

+0

私はStripesを初めて使っています。それは理にかなっています。それ、どうやったら出来るの? error2.jsp' 'としてerror.jsp'' \t \t \t \t \t /error.jsp \t JBCP

+0

コピー:ここに私のweb.xmlの設定があるので、私はあなたが正しいですよね。変更 'エラー。jsp'の内容を<%@ page language = "java" contentType = "text/html; charset = UTF-8"に変更します。pageEncoding = "utf-8" %><% response.setHeader( "Location"、 "/" error2.jsp ");レスポンス.setHeader( "Connection"、 "close"); %> ' – hkn

関連する問題