Как использовать метод ZK getFellow()?

Я передаю кучу вкладок из файла zul в файл java следующим образом:

вкладки.зул

<tabs>
  <tab id="tab1" label="Tab1"> </tab>
  <tab id="tab2" label="Tab2"> </tab>
</tabs>
<zscript>
  testTabs = new TestTabs();
  Tab[] tabs = {tab1, tab2}
  testTabs.registerTabs(tabs)
</zscript>

TestTabs.java

public class TestTabs {
  ....
  private HashMap<String,Tab> tabMap;

    void registerTabs (Tab[] tabs) {
      this.tabMap = new HashMap<String,Tab>();
      for (Tab t: tabs) {
        this.tabMap.put(t.getId(),t);
      }
    }

   if(condition) {
     tabMap.get("tab1").setVisible(true);
     tabMap.get("tab2").setVisible(true);
   }  

}

Теперь я думаю, что использование Hashmaps для доступа к вкладке — это окольный путь. Использование метода getFellow(String id) для доступа к вкладке было бы намного проще, верно? Но я не уверен, как это реализовать. Может кто-то помочь мне с этим?

Спасибо, Сони


person sony    schedule 20.10.2010    source источник
comment
1. Что такое ЗК? 2. Что вы подразумеваете под getFellow()? Вы, кажется, используете терминологию, которую, как вы предполагаете, мы поймем, но вы не определяете себя.   -  person matt b    schedule 20.10.2010
comment
@matt b: tinyurl.com/3w76bgc   -  person sinuhepop    schedule 06.10.2011


Ответы (2)


Есть несколько способов сделать это:

  1. Расширьте org.zkoss.zul.Window в своем классе и свяжите его в файле zul следующим образом:
    <window id="myWindow" use="package.to.your.ClassThatExtendsWindow">
    <!-- your tabs go here -->
    </window>
    Затем в своем классе вы сможете использовать Tab tab1 = (Tab) this.getFellow("tab1");
  2. Расширьте org.zkoss.zk.ui.util.GenericForwardComposer и свяжите его в своем zul следующим образом:
    <window id="myWindow" apply="package.to.your.ClassThatExtendsGenericForwardComposer">
    <!-- your tabs go here -->
    </window>
    Затем в своем классе объявите private Tab tab1; и вы можете использовать его прямо сейчас.

Обратите внимание на разницу между ключевыми словами use и apply. Если вы используете второй подход, убедитесь, что имя вашей переменной соответствует идентификатору вашего компонента ("tab1").

person Community    schedule 26.11.2010

Метод getFellow() можно использовать в компоненте ZK. Пользователи могут получить доступ к компоненту по его идентификатору

myWindow.getFellow("label_1");

если вы используете способ ZK MVC в своем приложении.

вы можете сохранить свой **"композитор" на рабочий стол, после чего вы сможете получить доступ к любой части страницы.

person Ryan Wu    schedule 15.11.2010