Wicketで外部サイトの画像を動的に表示する
前回の続き。
外部サイトっていうかアップロードしてもらった画像を表示するときの話。
アップロードしてもらった画像はWicketを経由しないでアクセスできるようにもしたかった。
WicketのImageクラスを使ってやるとWicketプロジェクト内の画像しか表示できない仕様になってるらしい。
そこでここを参考に外部サイトのURLで画像が表示できる自作Imageクラスを作った。
StaticImage.java
public class StaticImage extends WebComponent{ private static final long serialVersionUID = 1L; public StaticImage(String id,final String url) { this(id,new AbstractReadOnlyModel<String>(){ @Override public String getObject() { return url; } }); } public StaticImage(String id, IModel<?> model) { super(id, model); } @Override protected void onComponentTag(ComponentTag tag) { super.onComponentTag(tag); checkComponentTag(tag, "img"); tag.put("src", this.getDefaultModelObjectAsString()); } }
これで、外部サイトの画像を表示したいときに
this.add(new StaticImage("image","http://master.of.taka/image/image.jpg");
<img src="" wicket:id="imgae"/>
上のようにすると
<img src="http://master.of.taka/image/image.jpg" />
という具合になる。
ちょっと改造すればalt属性も操作できるようにするのも簡単にできそうだ。
以上。