7

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

  1. グローバルに使用される画像、js、css用の単一のディレクトリがあります
  2. これらのリソースを登録(または登録しない)して、継承されたページまたは兄弟ページから、将来作成する可能性のあるBasePageにアクセスできるようにします。
  3. これらのリソースにCSSおよびJS内でアクセスできるようにします(画像へのURLなど)

これまで、コンポーネントまたはアプリケーションレベルのスコープのリソースをパッケージ化する方法を示すいくつかの例を読みましたが、助けを求めている3つの問題すべてに対処しているようには見えません。参照するために、グローバルに使用される画像(編集アイコン、ロゴなど)を各コンポーネントパッケージにコピーする必要がないことが重要です。メンテナンス上の理由から、これらのバインディングをグローバルに1か所で作成して、簡単に参照できるようにすることをお勧めします。更新しています。

4

1 に答える 1

7

これは、Wicket1.4から大幅に変更されました。WicketのWikiの「リソースを使用したJavascriptまたはCSSの追加」を参照してください。

画像やその他のリソースにグローバルにアクセスできるようにするには(特に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"));

ちなみに、私はGitHubから入手できるwicketstuff-merged-resourcesという小さなライブラリの作成者です。このライブラリを使用すると、アプリケーションのinit()での手動マウントをスキップして、代わりにアノテーションを使用できます。

編集:更新されたリンク。残念ながら、wicketstuffwikiのドキュメントは現在なくなっているようです。しかし、私たちのブログにはいくつかの記事があります。

于 2009-10-27T18:11:34.547 に答える