page是component的集合,只有添加到page中的component对于client才是可用的,显然如果把他们从page中移除之后,他们就是不可见的。
desktop是page的集合,比如说我们创建了一个index.zul页面,在这个页面,包含了两个zul,分别是booklist.zul和cart.zul,当用户点击某个按钮发送请求的时候,desktop就发挥作用了,它相当于一个独立的request。每当一个独立的请求发送到服务器端的时候,随之而发送的就是响应的desktop
我们直到component只有关联到page才是可见的,将component关联到page有两种方式:
(1)通过window来append component
Window window = new Window();
window.setTitle("hello world");
window.setBorder("normal");
Button button = new Button();
button.setLabel("say Hello");
window.appendChild(button);
(2)通过component来set parent
Window window = new Window();
window.setTitle("hello world");
window.setBorder("normal");
Button button = new Button();
button.setLabel("say Hello");
button.setParent(window);
如果要从page中删除一个component,有下面三种情况:
(1)如果是root component,可以用setPage(null);
(2)如果不是root component,可以用setParent(null);
(3)detach()方法直接删除不管它是不是root component。
另外需要补充的两点:一、不要把component存放在static field中;二、component.clone()会把自身和子孙都复制过来,而且复制过来的没有parent,如果需要的话需要手工指定,但是其id space是保留的。