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