Domanda

Voglio mettere alcuni file JavaScript in uno dei miei pacchetti e fare Struts li servono come /struts/js/foo.js

Struts fa che per i file in pacchetto 'template' (è lì che si trovano i file del plugin jQuery, custodito da opzione struts.ui.templateDir). Tuttavia voglio mettere i file in un altro pacchetto; Se io ridefinire struts.ui.templateDir cessa quindi puntoni lavorare perché non riesce a trovare i suoi modelli.

Quindi la domanda è:? Come dire Struts per servire i file in org.foo.some.package.js come /struts/js/whatever.js

È stato utile?

Soluzione

Struts2 può servire contenuti statici fuori dalla scatola. Di contenuti statici impostazione predefinita viene servito da DefaultStaticContentLoader un'implementazione di StaticContentLoader. Si cerca automaticamente i seguenti pacchetti:

  • org.apache.struts2.static
  • modello
  • static
  • org.apache.struts2.interceptor.debugging

È possibile aggiungere ulteriori pacchetti da cercare nel parametro di filtro init denominato "pacchetti".

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

È possibile aggiungere più di un pacchetto, uso virgola o spazio o scheda o una nuova riga come separatore.

A proposito è possibile controllare se il contenuto statico viene memorizzato nella cache da un browser o meno con questa costante:

struts.serve.static.browserCache

Altri suggerimenti

Un modo è quello di estendere l'intero modello e cambiare il templateDir come già suggerito. A meno che non si ha la necessità di implementare un modello personalizzato, questo è altamente over-kill.

Ma il migliore IMHO modo è quello di dimenticare /struts/js/foo.js e utilizzare qualsiasi altro URL per caricare i js.

alcuni esempi:

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)

Struts

<action name="myacctionjs">
    <result>/WEB-INF/xyz.js</result>
</action>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top