2009-05-15 4 views
3

Я заметил, что функция проверки на стороне клиента на основе JavaScript в структуре struts 2 использует файл javascript, который входит в файл struts2 JAR. Файл javascript каким-то образом включается в JSP-страницу, просто используя тег из фреймворка.Как struts 2 включает файлы javascript в jsp из их struts.jar?

Если мне удастся это сделать, это будет очень полезно для многих файлов библиотеки javascript, которые я всегда копирую в каждом новом веб-проекте, потому что я поместил их всех в файл JAR, а затем каждый проект выиграл, t имеют другую копию файлов (которые, как вы знаете, причиняют много проблем).

Никто не знает, как они это сделали?

ответ

9

Хорошо, я вытащил какое-то время от работы и исследовать, как основа делает это. Оказывается, Struts 2 имеет реализацию для статического контента. Это настроено в файле конфигурации struts.properties по свойству: struts.serve.static.

Если это свойство установлено в истинного статического контента (JavaScript, CSS, изображения и т.д.) в вашей странице JSP, которая начинается с пути /распорки/ или с /статический/ будет обслуживаемой struts FilterDispatcher и другой класс, называемый DefaultStaticContentLoader.

Например:

<script language="JavaScript" type="text/javascript" src="struts/someScript.js"></script> 
<script language="JavaScript" type="text/javascript" src="static/otherScript.js"></script> 

Оба этих файлов JavaScript будут обслуживаться фильтр и ContentLoader.

По умолчанию класс ContentLoader будет искать требуемый файл только в двух папках внутри ядра JAR Struts 2: org.apache.struts2.static и шаблон.

Теперь есть способ для вас, чтобы сделать ContentLoader для поиска в других местах, и он настроен в файле web.xml в фильтре Params так:

<filter> 
<filter-name>struts2</filter-name> 
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
<init-param> 
    <param-name>packages</param-name> 
    <param-value>insert.your.package.with.static.content.here</param-value> 
</init-param> 
</filter> 

Это мне потребовалось много времени, чтобы найти это мало информации об этой функции. Если вы хотите прочитать документацию для этого, это находится в API Struts2 в классе FilterDispacher here, где говорится: «Обслуживание статического содержимого».

Надеюсь, вы сочтете это полезным, для меня это отличная функция, и это очень хорошо реализовано.

-1

Вы можете поместить все, что захотите, в файл .jar, это zip-архив. jar (1) может помещать любые файлы в банку. Задача jar Ant также принимает набор файлов.

Позже вы можете получить доступ к этим ресурсам в виде потоков, используя стандартный java-api.

http://java.sun.com/javase/6/docs/api/java/util/ResourceBundle.html

+0

-1 Это путь от знака. Это статические ресурсы, загруженные непосредственно из браузера клиента и не могут быть выброшены в банку. Вы думаете о ресурсах пути класса, которые может использовать сервер. – Neil

 Смежные вопросы

  • Нет связанных вопросов^_^