Вопрос

Я хочу поставить файлы JavaScript в одну из моих пакетов и заставляют Struts подать их как /struts/js/foo.js

Struts делает это для файлов в пакете «Шаблон» (вот где расположены файлы плагина jQuery, охраняются struts.ui.templateDir вариант). Однако я хочу поставить эти файлы в другой пакет; Если я переопределил struts.ui.templateDir Затем стойки прекращают работу, потому что он не может найти его шаблоны.

Таким образом, вопрос в том, как сказать struts подавать файлы в org.foo.some.package.js так как /struts/js/whatever.js?

Это было полезно?

Решение

Struts2 может служить статическим контентом из коробки. По умолчанию статический контент обслуживается DefaultStaticContentLoader Реализация StaticContentLoader. Отказ Он автоматически ищет следующие пакеты:

  • org.apache.struts2.Static
  • шаблон
  • статический
  • org.apache.struts2.interceptor.debugging.

Вы можете добавить дополнительные пакеты, которые можно найти в параметре INIT FILTER INIT с именем «Пакеты».

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    <init-param>
        <param-name>packages</param-name>
        <param-value>some.package another.one</param-value>
    </init-param>
</filter>

Вы можете добавить более одного пакета, используйте запятую или пространство или вкладку или новую строку в качестве сепаратора.

Кстати, вы можете контролировать, следует ли кэшировать статический контент браузером или не с этой константой:

struts.serve.static.browserCache

Другие советы

Один из способов - продлить весь шаблон и изменить templateire, как вы уже предложили. Если не нужно реализовать пользовательский шаблон, это очень чрезвычайно убийство.

Но лучший способ ИМХО забыть /struts/js/foo.js И используйте любой другой URL для загрузки JS.

Немногие образцы:

Jsp.

WebPages
    |-->myjs.js         (a normal js file)
    |-->mydynamicjs.jsp (a .jsp file containing ONLY javascript code)
    |-->WEB-INF-->xyz.js (another .js file but accessed only through action)

Стойки

<action name="myacctionjs">
    <result>/WEB-INF/xyz.js</result>
</action>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top