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