Загрузить файл из резервной папки - PullRequest
1 голос
/ 20 июля 2011

Мы генерируем ссылки на файлы CSS и JavaScript с нашей страницы JSP. Эти файлы CSS и JS организованы в Локальные папки . Теперь нам нужно загрузить файл из резервного места в случае, если запрошенный файл недоступен в указанном месте (аналогичный подход, который используется для загрузки комплектов ресурсов - если специфичный для локали комплект не доступно, то используется по умолчанию). Не могли бы вы предложить подход для реализации этого?

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Вы можете сделать сервлет для обработки выборки файлов, специфичных для локали. Сопоставьте сервлет с URL-адресом, таким как «/ yourApp / localeFile», и используйте его в своих JSP, например:

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

Сервлет считывает и возвращает содержимое файла локали, если он существует. Если файл не найден, он вернет содержимое файла резервной локали.

С другой стороны, возможно, вы могли бы сделать что-то вроде того, чтобы обработчик 404 сервера для каталога локали возвращал резервный файл.

0 голосов
/ 05 сентября 2011

Если вы используете 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 добавить

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

тогда вы можете использовать его как

* * 1010

при условии, что у вас есть папки webapp / js, webapp / js / en ....

...