WebPage
하위 클래스 페이지를 고려하십시오. 생성자는 을 만들고 을 추가합니다. ListView
구성 요소 에 LoadableDetachableModel
이 저장되어 있습니다.Wicket Page의 ListView LoadableDetachableModel은 AJAX 호출을 통해 수정됩니다. 페이지가 다시 그려지지 않습니다
이 페이지는 AbstractDefaultAjaxBehavior
[각각 renderHead
및 respond
메서드를 재정의하는 익명 하위 클래스의 인스턴스 2 개를 추가합니다.
대응하는 HTML은 <div>
는 WMC 에 wicket:id
구속과 <table>
<tr>
와 년대가 ListView
구성 요소의 ListItems
에 바인딩이 포함되어 있습니다.
페이지가 처음 올바르게 표시됩니다.
클라이언트와의 사용자 상호 작용을 기준으로 문제의 AbstractDefaultAjaxBehavior
이 모델의 모델 객체에 대한 정보를 설정합니다. 이 정보는 특정 listitem
이 표의 행에 <td>
으로 나타나는 방식을 변경하는 데 사용됩니다. 특히 선택한 행의 텍스트는 굵게 표시되어야합니다.
진단 디버거 중단 점 및 AJAX 호출의 양쪽에 System.out
정보는 행동의 respond
방법은 제대로 호출되고 있는지와 모델 객체가 제대로 수정되고 있음을 확인합니다.
페이지가 자동으로 다시 그려지지 않습니다. 페이지를 수동으로 다시로드하면 브라우저가 올바르게 작동합니다.
나는이 문제를 연구하고 와 함께 동작의respond
방법에서
target.add(webMarkupContainer);
을 요구하는을 포함하여 내가 해봤 가능성 관련 다양한 솔루션,
을 발견했습니다
respond
방법 중target.appendJavaScript("window.location.reload();");
을 호출하십시오.respond
방법에서setResponsePage(this);
,setResponsePage(Page.class);
및setResponsePage(getPage());
를 호출뿐만 아니라 페이지에서 오버라이드 (override)
onBeforeRender
방법에서.
의견이 있으십니까?
여러 조합으로 둘 다 성공적으로 사용하지 않았습니다. 나는 당신의 리드를 따라'AbstractDefaultAjaxBehavior'를 만들고 문제가있는 이벤트에 대한 구현을'AjaxEventBehavior'처럼 다시 수행했습니다. 팁 주셔서 감사합니다 - 나는 길을 따라 그 유용한 비트를 놓친 것 같아요.누군가가 신경 쓸 필요가 없다면 추상 클래스의 업데이트되지 않는 성격이 기술되어있는 관련 참조 정보를 가리킬 수 있습니까? 다시 한번 감사드립니다. –