2009-06-22 3 views
5

서버에서 데이터 세트의 변경 사항을 가져 오기 위해 정기적으로 태피스 트리 영역을 새로 고치는 가장 좋은 방법은 무엇입니까?정기적으로 태피스 트리 영역 새로 고침

public String getModeChangedUrl() 
{ 
    // will call the onModeChanged method 
    return resources.createEventLink("ModeChanged").toAbsoluteURI(); 
} 

: 당신이 당신의 이벤트 처리기에 대한 URL을 노출해야합니다, 첫째

new PeriodicalExecuter(function(pe) { 
    var zoneObject = Tapestry.findZoneManager(element); 
    zoneObject.updateFromUrl(updateUrl); 
}, 5); 
+1

BTW, 유사한 기능 계획 - https://issues.apache.org/jira/browse/TAP5-746 – Sergey

답변

4

당신은 그 영역을 업데이트 할 태피스트리의 ZoneManager를 호출 프로토 타입의 PeriodicalExecuter을 사용하고있을 수 그런 다음 tml의 javascript 블록에서 변수에 URL을 할당하십시오.

var modeChangedUrl = "${modeChangedUrl}"; 

var zm = Tapestry.findZoneManagerForZone(zoneId); 

그것은 당신의 ZoneManager를 얻을 수있는 영역 중요하지가,이 모든 아약스 콜백을 촉진입니다 않습니다

그런 다음 당신은 자바 스크립트 개체입니다 ZoneManager에 대한 핸들을 얻을 필요가있다. 이벤트 리스너가 MultiZoneUpdate 또는 다른 영역의 업데이트를 반환하면 올바르게 처리됩니다.

마샬링을 위해 더미 영역을 사용하고 하나의 영역 만 업데이트하는 경우에도 항상 MultiZoneUpdate를 반환합니다. 여러 영역을 업데이트해야하는 경우가 종종 있기 때문에 일관성있게 접근하는 것이 더 쉽습니다. 어쨌든, 그것은 당신의 질문에 대한 약간의 주제입니다.

이벤트 처리기에 대한 추가 매개 변수가있는 경우 '/'즉 "http://www.host.com/app/page/event/param1/param2"로 구분 된 URL에 추가 할 수 있습니다.

제안 헤닝로

zm.updateFromURL(url); 

, 프로토 타입의 PeriodicalExecuter과이 결합하는 것은 당신이 원하는 것을 달성 :

012 당신이 urlZoneManager, 당신은 초기화 할 수있는 요청 - 응답 루프를 가지고 지금

+0

typeo "PeriodicalExecutor"-> "PeriodicalExecuter" – pstanton

+0

@pstanton : 모두 고정 됨. – Henning

3

:

+0

T5.2 이후 다소 변경되었습니다. MultiZoneUpdate는 과거의 일입니다. 클라이언트 쪽 물건은 대체로 동일합니다. – pstanton

관련 문제