2011-07-20 11 views
1

私たちは、JSPページからCSSJavaScriptファイルへのリンクを生成しています。これらのCSSおよびJSファイルは、ロケール固有のフォルダに編成されています。要求されたファイルが指定された場所で利用できない場合(リソースバンドルをロードするために使用される同様の方法 - ロケール固有のバンドルが利用できない場合は、からファイルをダウンロードする必要があります。デフォルトの1が使用されます)。 これを実装する方法をお勧めしますか?フォールバックロケーションからファイルをダウンロード

+0

静的コンテンツのフロントサーバーとしてApacheを使用していますか? – Santosh

+0

私はIBM HTTP Serverを使用しています。私はそれがApacheの上に構築されていると思う – Apps

答えて

2

ロケール固有のファイルを取得するためのサーブレットを作成できます。 「/ yourApp/localeFile」のようなURLにサーブレット地図などJSPでそれを使用します。それが存在する場合、サーブレットは、ロケールのファイルの内容を読んで返します

<script src="/yourApp/localeFile?name=something.js&locale=en_US"> 

。ファイルが見つからない場合は、フォールバックロケールのファイルの内容を返します。

代わりに、ロケールディレクトリのサーバーの404ハンドラでフォールバックファイルが返されるようなこともあります。

+0

これはresourcebundleの仕組みですか?私は同じメカニズムを実装したいと思います。 – Apps

0

jsp-api-2.0を使用する場合は、タグファイルを書き込むことができます。それ以外の場合は、概念のみを使用できます。

<%@ taglib tagdir="/WEB-INF/tags" prefix="g" %> 

を追加し、あなたが持っていると仮定して

<script type="text/javascript" src='<g:file file="myfile1.js" path="/js" />'></script> 
<script type="text/javascript" src='<g:file file="myfile2.js" path="/js" />'></script> 

として使用することができ、あなたのJSPに/WEB-INF/tags/file.tag

<%@tag import="java.io.File"%> 
<%@ taglib tagdir="/WEB-INF/tags" prefix="g" %> 
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> 

<%@ attribute name="path" required="true" type="java.lang.String" rtexprvalue="true"%> 
<%@ attribute name="file" required="true" type="java.lang.String" rtexprvalue="true"%> 

<% 
    final PageContext pc = (PageContext) getJspContext(); 
    final String lang = request.getLocale().getLanguage(); 

    final String prefered = pc.getServletContext().getRealPath(path + "/" + lang + "/" + file); 
    final File file = new File(prefered); 
    if (file.exists()) { 
     pc.setAttribute("fileToUse", path + "/" + lang + "/" + file); 
    } else { 
     pc.setAttribute("fileToUse", path + "/" + file); 
    } 
%> 
${fileToUse} 

を作成webapp/js、webapp/js/en ...フォルダ。

関連する問題