2011-07-20 106 views
1

我們正在從我們的JSP頁面生成CSSJavaScript文件的鏈接。這些CSS和JS文件組織在區域設置特定文件夾。現在,我們需要從下載文件,以防萬一請求的文件在指定的位置不可用(用於加載資源包的類似方法 - 如果特定於語言環境的Bundle不可用,則默認使用一個)。 你能否建議一種方法來實現這一點?從回退位置下載文件

+0

您是否使用apache作爲靜態內容的前端服務器? – Santosh

+0

我正在使用IBM HTTP Server。我認爲它建立在Apache之上 – Apps

回答

2

您可以讓一個servlet處理獲取特定於語言環境的文件。該servlet映射到像「/ yourApp/localeFile」一個URL,並用它在你的JSP中,如:

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

該servlet會讀,並返回語言環境的文件的內容,如果它存在。如果找不到該文件,它將返回回退語言環境文件的內容。

另外,也許你可以做一些事情,如有服務器的語言環境目錄404處理程序返回後備文件。

+0

這是資源管理器的工作原理嗎?我想實施相同的機制。 – Apps

0

如果您使用jsp-api-2.0,您可以編寫標籤文件,否則您只能使用概念。

在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} 

添加

<%@ 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> 

假設你有webapp/js,webapp/js/en ...文件夾。