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属性も操作できるようにするのも簡単にできそうだ。

以上。