2009-05-15 7 views
3

J'ai remarqué que la fonction de validation côté client javascript de la structure struts 2 utilise un fichier javascript qui se trouve dans le fichier JAR struts2. Le fichier javascript est inclus d'une manière ou d'une autre dans la page JSP apparemment en utilisant simplement une balise du framework. Si je parviens à le faire, je serai extrêmement utile pour les nombreux fichiers de bibliothèque javascript que je copie toujours dans chaque nouveau projet web, parce que je les mettrai tous dans un fichier JAR et ensuite chaque projet sera gagné. t avoir une copie différente des fichiers (qui, comme vous le savez, pose beaucoup de problèmes).Comment struts 2 inclut-il les fichiers javascript dans un fichier jsp de leur fichier struts.jar?

Quelqu'un sait comment ils l'ont fait?

Répondre

9

D'accord, je tire un peu de temps de travail et étudier comment le cadre le fait. Il s'avère que Struts 2 a une implémentation pour servir du contenu statique. Ceci est configuré dans le fichier de configuration struts.properties par la propriété: struts.serve.static.

Si cette propriété est définie sur vrai tout contenu statique (javascript, css, images, etc.) dans votre page JSP qui commence par le chemin /entretoises/ ou avec /statique/ seront servis par les entretoises FilterDispatcher et d'autres classes appelées DefaultStaticContentLoader.

Par exemple:

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

deux de ces fichiers javascript seront servis par le filtre et le ContentLoader.

Par défaut, la classe ContentLoader va rechercher le seul fichier demandé dans deux dossiers à l'intérieur du noyau Struts 2 JAR: org.apache.struts2.static et modèle.

Maintenant, il y a un moyen pour vous de faire la ContentLoader à rechercher dans d'autres endroits et il est configuré dans le fichier web.xml dans les params de filtre comme ceci:

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

Il m'a fallu beaucoup de temps pour trouver ceci, il n'y a pas beaucoup d'informations sur cette fonctionnalité. Si vous voulez lire la documentation pour cela, c'est dans l'API Struts2 dans la classe FilterDispacher here à droite où il est dit "Servir du contenu statique".

J'espère que vous le trouverez utile, pour moi, c'est une fonctionnalité intéressante et très bien implémentée.

-1

Vous pouvez mettre ce que vous voulez dans un fichier .jar, c'est une archive zip. Jar (1) peut mettre tous les fichiers dans le pot. La tâche JAR de Ant prend également un ensemble de fichiers.

Plus tard, vous pourrez accéder à ces 'ressources' en tant que flux en utilisant l'API Java standard.

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

+0

-1 C'est loin d'être le cas. Ce sont des ressources statiques téléchargées directement à partir du navigateur du client, et ne peuvent pas être jetées dans un pot. Vous pensez à des ressources de chemin de classe que le serveur pourrait utiliser. – Neil

Questions connexes