[Wicket-ja-user 394] Re: リソースのマウント/URIについて

Back to archive index

Akira Ueda ue****@gol*****
2010年 1月 13日 (水) 07:54:26 JST


岩室さん、

はじめまして上田と申します。

> 1) ローカルでも(Webサーバ無しで)そのまま表示できるようにしたい。
> 2) ディレクトリ構成を維持したままWicket化したい。(デザイナさんと
>   そのままやりとりしたい)
> 3) package名(に含まれる組織名等)は外に出したくない。
> 4) 実運用環境では、リソースの処理はフロントのWebサーバにまかせたい。


この要件であれば Shared Resource 化せずリンクとして表現することで実現できます。

<link rel="css/common.css"/>

とあった場合、Wicket はコンテキストパスからの相対パスとみなして必要に応じて ../ を追加します。したがって HTML を置いた場所がコンテキストルートであれば要件を満たせることになります。コンテキストルート直下でなければならないのが制約になってしまいますが、最近はこの方針で開発していて気に入っています。

サンプルアプリケーションをこちらに置いてあります。ご参考になれば幸いです。
http://files.me.com/akr4/u6g3jp

-- 
上田

On 2010/01/13, at 4:52, Tsutomu Yano wrote:

> 岩室さん
> 
> 矢野です。
> ソースをいろいろ追ってみましたが,SharedResourceが指す物理的なファイルに対して静的なURLを指定するのは難しいように思いました。
> 
> Twitterなんかで英語圏ユーザにも聞いてみたりしましたが,一番簡単な方法は,<wicket:link>に頼らないことのようですね。
> 
> 
> <wicket:link>ではなく,<wicket:remove>で囲うことによって,HTMLファイルとしてのプレビューが崩れることなく,プログラムから特定のリソースをバインドすることが出来ます。<wicket:link>が使えたほうが簡単なのは明白なんですが,一つの案として。
> 
> 1 リンク部分を<wicket:remove>でくくることでWicket的にはその部分を消滅させます。HTML的には意味があるのでプレビューは出来ます
> 2 該当HTMLを使うPageサブクラスで,次のような感じで,固定のクラスをscopeに指定してSharedResourceを追加します。
> 
> add(new HeaderContributor(CSSPackageResource.getHeaderContribution(Stylesheet.class,"default.css")));
> 
> これによりStylesheet.classと同じ場所にあるdefault.cssへのlinkがHTMLヘッダに追加されます。cssのある場所にJavaクラスが存在しない場合は,ダミーでもなんでもいいので一つ作ればいいでしょう。
> 
> 3 ApplicationのgetSharedResources().putClassAlias()を使って,上記のクラスにエイリアスを設定する
> 
> 
> 一応,これで該当リソースへのURLは常に固定されるようになります。
> 
> 
> しかしまあ,スマートとはちょっと言えないですね。できればHTMLを修正したらHTMLプレビューもプログラムも同時に更新されるほうがいいですし。どっちかというとワークアラウンド,回避策,という感じです。
> 案として書いておきます。
> 
> 
> なんかほかにいい案があればいいんですが。
> 
> 
> 
> ---------------------------------------------------
> 矢野 勉(やの つとむ)
> 電子メール: t_yano****@me*****
> ---------------------------------------------------
> 
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user




Wicket-ja-user メーリングリストの案内
Back to archive index