2017-11-29 6 views
0

PanelImageがこのPanelの内側にあります。 onAfterRenderImagedefaultModelを変更したいと思います。onAfterRender内のdefaultModelを変更します。

@Override 
protected void onAfterRender() { 
    super.onAfterRender(); 

    previewImage.setDefaultModel(new Model<String>(newUrl)); 


} 

しかし、これは効果がありません。目的はplaceholderを表示し、Panelがレンダリングされるとき、そのsrc

答えて

1

onAfterRender()を変更することがあり、それがブラウザに送信され、最終的なHTMLのその一部を寄付している。すなわち、現在のComponentがレンダリングされた直後に実行するコールバックです。

このプレースホルダーで達成したいことはあまり明確ではありません。 プレースホルダを表示してから実際のイメージを遅延ロードする場合は、wicket-extensionsのAjaxLazyLoadPanelを使用できます。それとも、画像がブラウザ(img.addEventListener('load', ...)によってロードされると、プレースホルダを置き換えるためにJavaScriptを使用することができます。

onAfterRender()通常、右、このコンポーネントによってレンダリングされたコンテンツ/ボディの後に何かをレンダリングするために使用されているが、それを変更するために使用することはできません。

+0

はい、それは問題ですが、LazyLoadPanelの問題は、たとえば、テキストが最初に表示され、ページのフローが途切れてしまうためです。プレースホルダとテキストを表示してからイメージをダウンロードします。 – greedsin

+0

@greedsinイメージサイズがわかっている場合は、 'div'をスタイルすることができるので、サイズは似ていますか? – RobAu

関連する問題