Frage

Ich möchte einige JavaScript-Dateien in einem meiner Pakete setzen und machen Struts dienen sie wie /struts/js/foo.js

Struts macht das für Dateien in ‚Vorlage‘ Paket (das ist, wo jQuery Plugins Dateien befinden, von struts.ui.templateDir Option bewacht). Allerdings möchte ich diese Dateien in ein anderes Paket setzen; Wenn ich umdefinieren struts.ui.templateDir dann Streben aufhört zu arbeiten, weil es nicht seine Vorlagen finden können.

So ist die Frage: Wie Struts sagen, Dateien in org.foo.some.package.js als /struts/js/whatever.js dienen

War es hilfreich?

Lösung

Struts2 können statische Inhalte aus der Box dienen. Standardmäßig statische Inhalte wird von DefaultStaticContentLoader eine Implementierung von StaticContentLoader serviert. Es sucht automatisch die folgenden Pakete:

  • org.apache.struts2.static
  • template
  • statisch
  • org.apache.struts2.interceptor.debugging

Sie können zusätzliche Pakete hinzufügen in Filter init Parameter mit dem Namen "Pakete" durchsucht werden.

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

können Sie fügen mehr als ein Paket, verwendet Komma oder Leerzeichen oder Tab oder eine neue Zeile als Trennzeichen.

BTW können Sie steuern, ob statische Inhalte von einem Browser zwischengespeichert wird oder nicht mit dieser Konstante:

struts.serve.static.browserCache

Andere Tipps

Eine Möglichkeit ist es, die gesamte Vorlage zu erweitern und die TemplateDir ändern, wie Sie bereits vorgeschlagen. Es sei denn, man braucht ein eigenes Template zu implementieren, ist dies sehr über-kill.

Aber der beste Weg IMHO ist /struts/js/foo.js zu vergessen und eine andere URL verwenden, um die js zu laden.

Ein paar Beispiele:

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top