Wicketで外部ページの画像表示(おかわり)
前に公式のWikiからパクってきたのを載せたけど、それだとAjaxButtonで更新できない。
公式Wikiのもう一つの方(StaticImage)の関数ならAjaxButtonで更新できる。
静的ページならどっちでも問題ないんだけど、ExternalImageUrl(うまく行かない方)だとどうもセッションにモデルをぶっこんでないから、AjaxButtonで更新しようにも更新対象が無くて出来なかった、と。
(なんとなくComponentクラスの中を見ただけだから違うかもしれない。)
「setOutputMarkupIdでマークアップしてるのに更新できないなんておかしいなぁ、階層の問題か?」と早合点発言してた( ̄∀ ̄;)
僕が悪かったです、サーセンw
public class ExternalImage extends WebComponent { public ExternalImage(String id, IModel model) { super(id, model); setVisible(!(model. == null || model.getObject().equals(""))); } protected void onComponentTag(ComponentTag tag) { super.onComponentTag(tag); checkComponentTag(tag, "img"); tag.put("src", getModelObjectAsString()); } }
IEだと画像が存在しないときの表示がアレだから、ついでにsetVisibleつけておいた。
Ajax更新部をaddする時はsetVisible(true)をお忘れずに。