さて、私は仕事から少し時間を取って、フレームワークがこれをどのように行うかを調査しました。Struts 2には、静的コンテンツを提供するための実装があることがわかりました。これは、構成ファイルstruts.propertiesでプロパティstruts.serve.staticによって構成されます。
そのプロパティがtrueに設定されている場合、パス/struts/または/static/で始まるJSPページの静的コンテンツ(javascript、css、imagesなど)は、strutsFilterDispatcherおよびDefaultStaticContentLoaderと呼ばれる他のクラスによって提供されます。
例えば:
<script language="JavaScript" type="text/javascript" src="struts/someScript.js"></script>
<script language="JavaScript" type="text/javascript" src="static/otherScript.js"></script>
このjavascriptファイルは両方とも、FilterとContentLoaderによって提供されます。
デフォルトでは、ContentLoaderクラスは、Struts 2コアJAR内の2つのフォルダー(org.apache.struts2.staticとtemplate )でのみ要求されたファイルを検索します。
これで、ContentLoaderを他の場所でルックアップさせる方法があり、web.xmlファイルのフィルターパラメーターで次のように構成されます。
<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>
これを見つけるのに長い時間がかかりました。この機能に関する情報はあまりありません。このドキュメントを読みたい場合は、ここのFilterDispacherクラスのStruts2 APIにあり、 「静的コンテンツの提供」と表示されています。
お役に立てば幸いです。私にとっては素晴らしい機能であり、非常によく実装されています。