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