从后退位置下载文件

时间:2011-07-20 02:55:12

标签: java locale

我们正在从JSP页面生成CSSJavaScript文件的链接。这些CSS和JS文件按区域设置特定文件夹进行组织。现在我们需要从后退位置下载文件,以防所请求的文件在指定位置不可用(类似的方法用于加载资源包 - 如果特定于语言环境的Bundle是不可用,然后使用默认值)。 能否请您建议实施此方法?

2 个答案:

答案 0 :(得分:2)

您可以创建一个servlet来处理获取特定于语言环境的文件。将servlet映射到类似“/ yourApp / localeFile”的URL,并在JSP中使用它,如:

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

如果存在,servlet将读取并返回该语言环境文件的内容。如果找不到该文件,它将返回回退区域设置文件的内容。

或者,也许你可以做一些像locale目录的服务器404处理程序返回后备文件。

答案 1 :(得分:0)

如果您使用jsp-api-2.0,您可以编写标记文件,否则您只能使用概念。

创建/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}

在你的jsp add

<%@ 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 ...文件夹。