home wiki.fukuchiharuki.me
Menu

  • 追加された行はこの色です。
  • 削除された行はこの色です。
*実装 [#l19c92b0]

**コンテキスト内 [#k1f5b3d6]
コンテキスト内の静的ファイルなら直接URLを指定したほうが無駄な処理がない。
公開ディレクトリに配置しているコンテキスト内の静的ファイルならば、
src属性に画像の相対パス(またはURL)を指定したほうが無駄な処理がない。
 item.add(
   new WebMarkupContainer("hoge")
   .add(new SimpleAttributeModifier("src", "moge.jpg"))
 );
URLでアクセスできる画像ならば、
そのURLを指定することで表示させることができる(src属性値を書くのと同じだから。)

**コンテキスト外 [#a3e74713]
非公開ディレクトに配置した画像をアプリケーションを介して表示させるたいとき、
Imageコンポーネントにバイナリを読み込んで渡してあげる。
 final String imagePath = <ファイルパス>;
 Resource image = new DynamicImageResource() {
   @Override
   protected byte[] getImageData() {
     // imagePathから画像のバイト列を取得する
     return <画像のバイト列>;
   }
 };
 item.add(new Image("hoge", image));
注意しなければならないのはgetImageData()がコールされるのはブラウザが画像を取得するときだということ。
注意しなければならないのは、
アプリケーションがgetImageData()をコールするのは
ブラウザが画像を取得するときだということ。
つまり、ページをレンダリングした後、になる。
リソースのファイルパスをセッションから取得しながら、
セッションを上手にディタッチするとファイルパスを取得できくなる。
リソースのファイルパスをLoadableDetachableModelに保持していると、
アプリケーションはファイルパスを取得できなくなる。

*参照 [#ua228138]
-http://wicket.apache.org/apidocs/1.3/org/apache/wicket/markup/html/image/resource/DynamicImageResource.html
-http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/FileOutputStream.html
-http://java.sun.com/javase/ja/6/docs/ja/api/java/io/FileInputStream.html