Pregunta

Quiero poner algunos archivos JavaScript en uno de mis paquetes y hacer que ellos sirven como puntales /struts/js/foo.js

Puntales hace que los archivos en el paquete de 'plantilla' (que es donde se encuentran los archivos de jQuery plugin, vigilado por la opción struts.ui.templateDir). Sin embargo, quiero poner esos archivos en otro paquete; Si struts.ui.templateDir redefinen cesa entonces puntales de trabajo porque no puede encontrar sus plantillas.

Así que la pregunta es: ¿Cómo saber puntales para servir archivos en org.foo.some.package.js como /struts/js/whatever.js

¿Fue útil?

Solución

Struts2 puede servir contenido estático fuera de la caja. Por el contenido estático por defecto está siendo servido por DefaultStaticContentLoader una implementación de StaticContentLoader. Se busca automáticamente los siguientes paquetes:

  • org.apache.struts2.static
  • plantilla
  • estática
  • org.apache.struts2.interceptor.debugging

Puede agregar paquetes adicionales que se debe buscar en el parámetro init filtro llamado "paquetes".

<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>

Se puede añadir más de un paquete, el uso de la coma o espacio o tabulador o nueva línea como separador.

Por cierto, se puede controlar si el contenido estático se almacena en caché por un navegador o no con esta constante:

struts.serve.static.browserCache

Otros consejos

Una forma es extender a toda la plantilla y cambiar el TEMPLATEDIR como ya sugirió. A menos que uno necesita para implementar una nueva plantilla, esto es altamente sobre-kill.

Sin embargo, en mi humilde opinión la mejor manera es olvidar /struts/js/foo.js y utilizar cualquier otro URL para cargar el js.

pocas muestras:

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)

Puntales

<action name="myacctionjs">
    <result>/WEB-INF/xyz.js</result>
</action>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top