나는 AjaxPagingNavigator가 있습니다. 기본적으로 특정 조건에서 AjaxPagingNavigator 페이지가 다시로드됩니다. 이 경우 목록에 두 개 이상의 페이지가있는 경우에만 탐색기를 렌더링하려고합니다.(개찰구) 아약스 응답시 가시성 변경
그래서 어디서나 AjaxPagingNavigator에서 가시성 조건을 확인하고 가시성을 활성화/비활성화하여 탐색기를 통해 업데이트 할 수 있도록 처리기를 연결할 수 있습니다. 아약스 보이거나 안 보여?
마크 업 :
<div wicket:id="mainWrap">
<div wicket:id="navigator"/>
<div wicket:id="listWrap">
<div wicket:id="list><!-- here be content --></div>
</div>
</div>
그래서 나는 "목록"과 자제와 함께 "네비게이터를"새로 고침 "mainWrap"를 갱신 아약스 이벤트가 있습니다.
이것은 모든 것을 유발하는 이벤트입니다.
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
List foo = null; // do work to get list
model.setFound(found); // update the model (thus updating "list")
target.addComponent(mainWrap);
}
편집 : 나는 네비게이터를 작성 후 모델을 업데이트 한 후
navigator.setVisibility(list.getPageCount() > 1);
을 쓸 수 있습니다 알고 있지만, 나는 AjaxPagingNavigator의 서브 클래스에서 그를 캡슐화 기대했다. 내가 개찰구를 만진 이후
나는이 답을 매우 좋아한다.앞으로이 문제를 너무 많이 부활시켜 주셔서 감사합니다. –
+1 -이 하나의 생명의 은인 (두 표를받을 가치가 있습니다 :). 그러나 "onConfigure"에서 "isVisible"을 호출하는 이유는 무엇입니까? Dmitriy의 예제를 사용하면 첫 번째 아약스가 "someExpensiveToCalculateCondition"에 대해 "false"를 반환하고 두 번째가 "true"를 반환하면 "isVisible"은 전체 표현식을 거짓으로 간주합니다. –
Eduardo, 이것은 분명히 유스 케이스에 달려 있습니다. 하나는 일반적으로 onVisible()을 호출하여 onConfigure 체인의 가시성 변경을 존중합니다. – msparer