2009-05-15 4 views
3

Ich habe festgestellt, dass die JavaScript-clientseitige Validierungsfunktion des struts 2-Frameworks eine Javascript-Datei verwendet, die in der struts2-JAR-Datei enthalten ist. Die Javascript-Datei wird irgendwie in die JSP-Seite eingefügt, indem nur ein Tag aus dem Framework verwendet wird.Wie enthält Struts 2 Javascript-Dateien in einem JSP von ihren struts.jar?

Wenn ich das schaffe, wird es sehr hilfreich für die vielen JavaScript-Bibliotheksdateien sein, die ich immer in jedem neuen Webprojekt kopiere, weil ich sie alle in eine JAR-Datei lege und dann jedes Projekt gewonnen habe. t haben eine andere Kopie der Dateien (was, wie Sie vielleicht wissen, eine Menge Ärger verursacht).

Jeder weiß, wie sie es gemacht haben?

Antwort

9

In Ordnung, zog ich einige Zeit von der Arbeit und untersuchen, wie das Framework dies tut. Es stellt sich heraus, dass Struts 2 eine Implementierung hat, um statischen Inhalt zu liefern. Dies wird in der Konfigurationsdatei struts.properties durch die folgende Eigenschaft konfiguriert: struts.serve.static.

Wenn diese Eigenschaft auf wahr statische Inhalte gesetzt (Javascript, CSS, Bilder, usw.) in Ihrer JSP-Seite, die mit dem Pfad beginnt /Streben/ oder mit /static/ wird serviert die Struts FilterDispatcher und andere Klasse namens DefaultStaticContentLoader.

Zum Beispiel:

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

Beide dieser Javascript-Dateien werden von dem Filter und der Content serviert werden.

Standardmäßig wird die Content Klasse Lookup die angeforderte Datei nur in zwei Ordnern im Struts 2-Kern-JAR: org.apache.struts2.static und Vorlage.

Jetzt gibt es eine Möglichkeit für Sie die Content machen in anderen Orten zum Nachschlagen und es ist in der Datei web.xml in den Filter params wie folgt konfiguriert:

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

Es hat mir eine lange Zeit zu finden Dies gibt nicht viele Informationen über diese Funktion. Wenn Sie die Dokumentation dafür lesen möchten, ist es in der Struts2-API in der FilterDispacher-Klasse here, wo es heißt "Serving statischen Inhalt".

Ich hoffe, Sie werden es nützlich finden, für mich ist es ein großartiges Feature und es ist sehr gut umgesetzt.

-1

Sie können, was Sie wollen, in eine .jar-Datei einfügen, es ist ein Zip-Archiv. jar (1) kann beliebige Dateien in jar stellen. Die Jar-Aufgabe von Ant nimmt auch eine Dateigruppe.

Später können Sie diese Ressourcen als Streams mit Standard-Java-API zugreifen.

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

+0

-1 Das ist weit weg von der Marke. Hierbei handelt es sich um statische Ressourcen, die direkt vom Browser des Clients heruntergeladen werden und nicht in ein Jar geworfen werden können. Sie denken an Klassenpfadressourcen, die der Server verwenden könnte. – Neil