Wicketアプリケーションのグローバルにアクセス可能なリソース

StackOverflow https://stackoverflow.com/questions/1632478

  •  06-07-2019
  •  | 
  •  

質問

現在、ヘッダー(パネル)、フッター(パネル)として、継承されたページコンテンツの中央にあるBasePageで構成されるアプリケーションがあります。私が直面している問題はResourceReferencesにあります(おそらくこれは正しい方法でさえないでしょう)。私は次のことを可能にするソリューションを探しています:

  1. グローバルに使用される画像、js、cssの単一のディレクトリを作成
  2. これらのリソースを登録する(またはしない)ことで、継承ページまたは兄弟ページから将来作成するBasePageにアクセスできるようにします
  3. 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のドキュメントは今ではなくなっているようです。ただし、ブログにいくつかの記事があります。

>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top