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

Back to archive index

IWAMURO Motonori vmi****@jp*****
2010年 1月 12日 (火) 15:16:00 JST


岩室です。

えーっと、根本的にアプローチが間違ってる可能性もあるので、まず何がやり
たいかを書きます。

例えば、以下のような元ファイルがあるとします。

package/
├HomePage.html
├subsys1/
│└Page1.html
├subsys2/
│└Page2.html
├css/
│├parts1.css
│└parts2.css
└img/(略)

ここで、満たしたい要件は以下の通りです。

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

よって、

・html内の各パスは原則相対パスで記述する。
・html内のリソースへのリンクは<wicket:link>で囲む。
  (or automaticLinkingを有効にする)
・一部のページを除いてはサブシステム毎にサブディレクトリ化して、サブディ
  レクトリ単位でマウントする。

としているのですが、これだけでは、

resources/package.subsys1.Page1/null/css/parts1.css
resources/package.subsys1.Page1/null/css/parts2.css
resources/package.subsys2.Page2/null/css/parts1.css
resources/package.subsys2.Page2/null/css/parts2.css

# null???

のように、

・同一リソースへのURIがページ数分生成される。(⇒4の実現が少々面倒なこと
  になる。rewriteを駆使すれば何とかできそうですが)

・package名を抑制できない。(⇒3を満たせない)

という問題が出てきます。

で、3については「(ページを含む)コンポーネントには組織名等の詳細をパッケー
ジ名に含めない」というある意味究極の解法があるのですが、リソースのURIに
ついては良い解法が思い付かなかったので質問した次第です。

これを踏まえて検討してみたのですが、

At Tue, 12 Jan 2010 12:47:42 +0900,
Tsutomu YANO wrote:
> Applicationのinit()内部で、
> 
> getSharedResources().putClassAlias(org.apache.wicket.Application.class, "niceurl");
> 
> とすると、リソースURLのクラス名部分がorg.apache.wicket.Applicationの場合には、その部分が「niceurl」に置き換えられます。

そのような方法があるのか、と思ったのですが、よく考えるとこの方法では、
ページクラス毎にaliasを定義する必要はありませんか?

> >同一リソースに対して複数のURIが生成される
> 
> の部分はすこし具体的に確認したいのですが、
> 
> 1 たとえばmypackage.MyClassとmypackage.MyClass2があった場合、そこにあるmyimage.pngに「resources/mypackage.MyClass/myimage.png」と「resources/mypackage.MyClass2/myimage.png」のどちらでもアクセスできること
> 2 まったく同じ内容のjquery.jsが複数のパッケージあった場合、それらは別々のURLになること
> 3 ページにImageとかをResourceを引数にaddした場合に、物理的に同じ画像であっても別のURLが割り当てられること
> 
> のいずれのケースが気になりますか?

1に近いですが、「アクセスできること」が問題なのではなく、
「<wicket:link>により生成されてしまうこと」を問題視しています。

以上、よろしくお願いします。
-- 
IWAMURO Motonori




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