2012-06-10 3 views
0

저는 zk6 프레임 워크가있는 초보자입니다. 난 내가 한 ZUL에서 이동하고 일부 데이터를로드하기 위해 노력하고있어 뷰 모델 클래스를 만든 또 하나 : 나는 같은 ZUL에 머물하지만 난으로 이동하면 내가 아무 것도 얻을 수없는 경우 데이터가 표시됩니다 동일한 작업을 사용하여 데이터를로드하고 탐색하십시오.

public class SearchVM { 
@Command 
@NotifyChange({ "searchBean","slides" }) 
public void doSearch() { 
     //load data (slides) from data base 
     //navigate to another zul where i display my data 
    } 

} 

다른 것. Executions.sendRedirect("/result.zul")을 사용하려고했지만 성공하지 못했습니다.

답변

1

브라우저 리디렉션을 수행하지 마십시오. AJAX를 사용하여 결과를 표시하십시오.

따라서 하나의 zul 파일에는 두 개의 영역이 있으며 한 번은 기본적으로 숨겨져 있습니다. 버튼을 클릭하면 첫 번째 영역이 숨겨지고 두 번째 영역이 표시됩니다. 그들은 좋은 생각입니다 브라우저에서 액세스되지 않도록 내가/WEB-INF 아래에 포함 된 ZUL 파일을 넣어

<zk> 
<zscript> 
boolean showFirstZone = true; 
</zscript> 
<window visible="${showFirstZone}" id="firstZoneWindow"> 
    This is first zone. 

    <include src="/WEB-INF/search/search-input.zul"/> 

    <button label="Switch To Results" onClick="secondZoneWindow.visible=true;firstZoneWindow.visible=false;" /> 

</window> 

<window visible="${!showFirstZone}" id="secondZoneWindow" > 
    This is second zone. 

    <include src="/WEB-INF/search/search-result.zul"/> 

</window> 
</zk> 

알 수 있습니다. 그렇게하면 시스템의 데스크톱을 정의하는 항목 페이지 만/WEB-INF 아래에 숨겨진 포함 된 부분을 재사용 할 수있는 사이트의 기본 폴더 (예 : 고객 용, 직원 용, 관리자 용)에 있습니다.

이론 : 브라우저 요청 새 페이지를 가지고 있고이 세션을 통해 일 관련 참조 있도록 당신이 그들을 잡아 JSP PHP로

/. ZK는 AJAX에서 업데이트 한 응용 프로그램을 의미하는 "단일 페이지 응용 프로그램"을 만드는 경향이있는 데스크톱 지향 프레임 워크입니다. 브라우저 리디렉션을 수행하면 AJAX 업데이트가 수행되지 않습니다. 당신은 모든 JS와 CSS의 리 페치와 AJAX를 통한 동적 업데이트보다 훨씬 덜 효율적인 zul 파일의 재평가를 강요합니다.

http://books.zkoss.org/wiki/ZK%20Developer%27s%20Reference/UI%20Composing/Component-based%20UI을 읽으면 새 URL을 열면 새 데스크톱이 생성됨을 나타냅니다. ZK는 실제로 body에 onunload 자바 스크립트 처리기를 html 페이지에 넣습니다. 사용자가 새 URL을 탐색 할 때 기존 AJAX 이벤트를 보내 최종 AJAX 이벤트를 보내도록 브라우저에 지시합니다. 따라서 사용자가 첫 번째 zul 페이지에서 이동할 때 ViewModel을 실제로 파기합니다. 브라우저가 이동하는 새 URL에 데이터가 표시되지 않는 이유는 다음과 같습니다. 그것은 완전히 새로운 ViewModel을 얻을 수있는 완전히 새로운 데스크탑으로, 사용자가 떠나가는 것과 전혀 상관이 없습니다.