Wicketアプリケーションのグローバルにアクセス可能なリソース
質問
現在、ヘッダー(パネル)、フッター(パネル)として、継承されたページコンテンツの中央にあるBasePageで構成されるアプリケーションがあります。私が直面している問題はResourceReferencesにあります(おそらくこれは正しい方法でさえないでしょう)。私は次のことを可能にするソリューションを探しています:
- グローバルに使用される画像、js、cssの単一のディレクトリを作成
- これらのリソースを登録する(またはしない)ことで、継承ページまたは兄弟ページから将来作成するBasePageにアクセスできるようにします
- CSSおよびJS内でこれらのリソースにアクセスできるようにします(たとえば、画像へのURL)
これまで、コンポーネントまたはアプリケーションレベルのスコープのリソースをパッケージ化する方法を示すいくつかの例を読みましたが、私が助けを求めている3つの問題すべてに対処しているようには見えません。参照のために、グローバルに使用される画像(編集アイコン、ロゴなど)を各コンポーネントパッケージにコピーする必要がないことが重要です。更新。
解決
これはWicket 1.4から大幅に変更されました。 'Adding Javascript or CSS using WicketのWikiのリソース」
画像およびその他のリソースをグローバルにアクセス可能にする(特にCSSおよびJSファイルから)には、それらをアプリケーションのinit()メソッドにマウントします:
mountSharedResource("/images/submit.jpg", new ResourceReference(MyComponent.class, "foo.jpg").getSharedResourceKey());
リソースを複製する必要はまったくありません。リソースは、コンポーネント自体と同じパッケージにある必要はありません。アプリケーションでは、グローバルに使用されるリソースを専用パッケージ(com.example.myapp.imagesなど)に入れ、その中に単一のクラス(ImagesScope.javaなど)を入れます-JSとCSSで同じです。
画像の場合、コードでレンダリングされた参照は必要ないため、 ResourceReference
は必要ありません(org.apache.wicket.markup.html.image.Imageを除く)。 JSおよびCSSの場合
add(CSSPackageResource.getHeaderContribution(PanelOne.class, "PanelOne.css"));
ところで、私は wicketstuff-merged-resourcesという小さなライブラリの著者ですはGitHubから入手できます。このライブラリを使用すると、アプリケーションのinit()での手動マウントをスキップし、代わりに注釈を使用できます。
編集:リンクを更新しました。残念ながら、wicketstuff wikiのドキュメントは今ではなくなっているようです。ただし、ブログにいくつかの記事があります。
>