- 締切済み
リソースファイルを認識してくれません。
多言語対応としてリソースファイルを使用したいと四苦八苦しています。 bundle.jsp -- <%@ page contentType="text/html; charset=Shift_JIS" import="java.util.*" %> <% Locale objLcl=request.getLocale(); if(objLcl==null){objLcl=Locale.ENGLISH;} ResourceBundle objRb=ResourceBundle.getBundle("rs",objLcl); out.print(objRb.getString("sample.title")); %> -- rs.properties -- sample.title=This is English screen. -- 上記の2ファイルを作成し、rs.propertiesは WEB-INF/classes配下に置きました。 ブラウザからbundle.jspにアクセスすると下記のようなエラーが出ます。 java.util.MissingResourceException: Can't find bundle for base name rs, locale en_US ※ブラウザの言語はen_USにしてあります。 リソースファイルを認識していないと思うのですが、何か設定がいるのでしょうか? ただ、置くだけでは駄目なのでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
実際に手元で動作確認していないので推測ですが・・。 rs.propertiesファイルだけがある、という状態なわけですね。これはデフォルトのリソースになりますね。 エラーメッセージはlocale en_USのリソースが見つからない、ということのようなので、getBundleした際に指定のロケールに対応するリソースファイルが見つからない、ということじゃないでしょうか。 rs_en_US.properties(rs_en.propertiesでもいいと思いますが)というファイルを同じ場所に用意したらどうなりますか? これで取得できると思うんですが。 あるいは、インスタンス取得を単にResourceBundle.getBundle("rs");としてデフォルトのロケールで取得した場合はどうなるでしょう? これでデフォルトのリソースから取得できると思うんですが。
お礼
アドバイス有難うございます。 rs_en_US.properties ResourceBundle.getBundle("rs"); の両方を試してみましたが、結果は同じ「java.util.MissingResourceException」でした。 リソースファイルのパスとして「WEB-INF/classes」を見ていない、どこか別の場所を見ているように思います。 どこを見ているのか、そのパスはどこで指定しているのか。 それが分かれば助かるのですが。