2017-11-29 17 views
0

PanelImage이 있습니다. Panel입니다. onAfterRenderImagedefaultModel을 변경하고 싶습니다.onAfterRender 내 defaultModel을 변경하십시오.

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

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


} 

그러나 이것은 아무런 효과가 없습니다. 목적은 placeholder를 표시하고 Panel가 렌더링 될 때 브라우저로 전송 최종 HTML의 그 부분을 기여하고있다 즉, 다음, src

답변

1

onAfterRender()가 렌더링 된 현재 Component 후 바로 실행되는 콜백 자사 변경하는 것입니다 .

이 자리 표시자를 사용하여 달성하고자하는 것이 명확하지 않습니다. 자리 표시자를 표시 한 다음 실제 이미지를 느리게로드하려는 경우 wicket-extensions의 AjaxLazyLoadPanel을 사용할 수 있습니다. 이미지가 브라우저 (img.addEventListener('load', ...).에 의해로드되면 아니면 자리를 대체하는 자바 스크립트를 사용할 수

onAfterRender()은 보통 바로이 구성 요소에 의해 렌더링 컨텐츠/몸 후 뭔가를 렌더링하는 데 사용되는,하지만 그것을 변경할 수 없습니다

+0

예, 사실이지만 LazyLoadPanel의 문제는 예를 들어 텍스트가 먼저 표시되어 페이지의 흐름이 깨지기 때문에 자리 표시 자 및 텍스트를 표시 한 다음 이미지를 다운로드하기를 원합니다. – greedsin

+0

@greedsin 이미지 크기를 안다면'div' 스타일을 적용하여 비슷한 크기를 가질 수 있습니까? – RobAu