2009-05-15 9 views
3

私は、struts 2フレームワークのjavascriptクライアント側の検証機能が、struts2 JARファイルの内部にあるjavascriptファイルを使用していることに気付きました。 javascriptファイルは、フレームワークのタグを使用するだけで、どうやらJSPページに含まれています。struts 2はjspのstruts.jarからjavascriptファイルをどのように含んでいますか?

私がこれを行うことができれば、私はJARファイルの中にそれらをすべて入れて、すべてのプロジェクトが新しいプロジェクトを作成するために、新しいWebプロジェクトの中に常にコピーしている多くのjavascriptライブラリファイルにとって、ファイルの異なるコピーを持っています(あなたが知っているように、多くの問題を引き起こします)。

彼らはどのようにそれをしたのですか?

答えて

9

すべての権利、私は仕事からいくつかの時間を引っ張り、フレームワークがこれを行う方法を検討します。 Struts 2には、静的コンテンツを提供する実装があります。これは、構成ファイルstruts.propertiesで、プロパティーstruts.serve.staticによって構成されます。

そのプロパティは、へのパス/支柱/または/静的/はによって提供されますとで始まり、JSPページ内の静的コンテンツ(javascript、CSS、イメージなど)に設定されている場合Struts FilterDispatcherと他のクラスはDefaultStaticContentLoaderと呼ばれます。例えば

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

このJavaScriptファイルの両方がフィルターとContentLoaderによって提供されます。 org.apache.struts2.staticテンプレート

デフォルトでContentLoaderクラスはStrutsの2コアJAR内の2つのフォルダに要求されたファイルを検索します。

は、今そこにあなたが他の場所で検索するContentLoaderを作るための方法だと、それはこのように、フィルタのparamsに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> 

それは見つけるために私に長い時間がかかりましたこれは、この機能に関する多くの情報はありません。このドキュメントは、Struts2 APIのFilterDispacherクラスhereの「静的コンテンツの提供」のところにあります。

あなたはそれが便利だと思っています。それは素晴らしい機能であり、とてもうまく実装されています。

-1

あなたが望むものを.jarファイルに入れることができます。これはzipアーカイブです。 jar(1)は任意のファイルをjarファイルに入れることができます。 Antのjarタスクもファイルセットを取ります。

後で、標準のjava apiを使用して、ストリームとしてそれらの 'リソース'にアクセスできます。

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

+0

-1これは邪魔です。これらは、クライアントのブラウザから直接ダウンロードされた静的リソースであり、jarファイルにスローすることはできません。サーバーが使用できるクラスパスリソースについて考えています。 – Neil

関連する問題