Я столкнулся с проблемой, из-за которой IE не открывает диалоговое окно Сохранить как / Открыть для документа Excel, как это делает Firefox.
Итак, я создал фильтр сервлетов, который использует * .xls в качестве шаблона URL. Проблема, с которой я сейчас сталкиваюсь (поскольку это первый фильтр, который я создал), заключается в том, как получить имя файла, который хочет пользователь, чтобы диалоговое окно заполнялось правильно. В настоящее время фильтр вызывается, когда пользователь выбирает ссылку на заданной странице.
Вот что я придумал:
Это то, что у меня есть doFilter ().
String fileName = "fileName.xls";
HttpServletRequest httpRequest = (HttpServletRequest) pRequest;
String requestURI = httpRequest.getRequestURI();
if(StringUtils.isNotBlank(requestURI))
{
String uri[] = StringUtils.split(requestURI, '/');
fileName = uri[uri.length - 1];
}
HttpServletResponse httpResponse = (HttpServletResponse) pResponse;
httpResponse.setContentType("application/vnd.ms-excel");
httpResponse.setHeader("Content-disposition", "attachment; filename=\"" + fileName +"\"");
web.xml:
<filter>
<filter-name>ExcelFilter</filter-name>
<filter-class>vsg.rp.common.ExcelFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ExcelFilter</filter-name>
<url-pattern>*.xls</url-pattern>
</filter-mapping>
Это все работает над моей коробкой разработки: Windows XP, JBoss, Eclipse, Oracle. Но когда он работает на тестовом сервере - Linux, Apache / JBoss, Oracle - он не работает. Похоже, что фильтр даже не вызывается, не выдается никаких ошибок и т. Д. Есть идеи относительно того, почему это произойдет?