Struts 2で静的ファイル(JavaScript)を提供する
-
27-09-2019 - |
質問
いくつかのJavaScriptファイルをパッケージの1つに入れて、Strutsに/struts/js/foo.js
のように提供させたい
Strutsは、「テンプレート」パッケージ内のファイルに対してこれを行います(jQueryプラグインのファイルが配置され、struts.ui.templateDir
オプションによって保護されます)。ただし、これらのファイルを別のパッケージに入れたいと思います。struts.ui.templateDir
を再定義すると、テンプレートが見つからないため、strutsは機能しなくなります。
問題は、Strutsにorg.foo.some.package.js
のファイルを/struts/js/whatever.js
として提供するように指示する方法です。
解決
Struts2は、すぐに使用できる静的コンテンツを提供できます。デフォルトでは、静的コンテンツは、DefaultStaticContentLoader
の実装であるStaticContentLoader
によって提供されます。次のパッケージを自動的に検索します。
- org.apache.struts2.static
- テンプレート
- 静的
- org.apache.struts2.interceptor.debugging
「packages」という名前のfilterinitパラメーターで検索するパッケージを追加できます。 ジェネラコディセタグプレ
複数のパッケージを追加したり、カンマ、スペース、タブ、または改行を区切り文字として使用したりできます。
BTWでは、この定数を使用して、静的コンテンツがブラウザによってキャッシュされるかどうかを制御できます。 ジェネラコディセタグプレ
他のヒント
1つの方法は、テンプレート全体を拡張し、すでに提案したようにtemplateDirを変更することです。カスタムテンプレートを実装する必要がない限り、これは非常にやり過ぎです。
しかし、IMHOの最善の方法は、/struts/js/foo.js
を忘れて、他のURLを使用してjsをロードすることです。
いくつかのサンプル:
JSP ジェネラコディセタグプレ
ストラット ジェネラコディセタグプレ