ZK - вызов функции ZScript для вложенной подстраницы - PullRequest
1 голос
/ 23 января 2012

Скажем, у меня есть страница zul (page1.zul) примерно так:

<zk>
  <textbox id="textbox1" ></textbox>
  <button label="Display" onClick="display()" ></button>
  <include id="include1" ></include>
<zscript>
  display() {
    include1.setSrc("page2.zul");
    java.lang.Class[] argTypes = new java.lang.Class[]{String.class};
    org.zkoss.xel.Function fn = include1.getChildPage().getZScriptFunction("doDisplay", argTypes);
    fn.invoke(null, textbox1.value);
  }
</zscript>
</zk>

Но я получаю ошибку - «Попытка вызвать метод getZScriptFunction для нулевого значения».Таким образом, include1.getChildPage () возвращает нулевое значение, т.е. я не могу получить «page2» с помощью getChildPage (), и я не уверен, как это сделать.

Моя вторая страница показана ниже:(page2.zul)

<zk>
  <label id="label1" ></label>
<zscript>
  doDisplay(String value) {
    label1.setValue(value);
  }
</zscript>
</zk>

Если я введу что-либо в текстовое поле и нажму кнопку «Показать», я хочу установить значение метки на другой странице (т. е. page2) на значение втекстовое окно.Идея состоит в том, чтобы передать значение компонента с одной страницы в функцию zscript другой включенной страницы.

Ответы [ 3 ]

1 голос
/ 07 декабря 2012

Вы можете изменить файл1 следующим образом:

<zk>
  <textbox id="textbox1" ></textbox>
  <button label="Display" onClick="display()" ></button>
  <!-- <include id="include1" ></include> -->
  <div id="include"></div>
<zscript>
  display() {
    include.appendChild(Executions.createComponents("page2.zul", include, null));
  }
</zscript>
</zk>
1 голос
/ 25 января 2012

Вы можете сделать это вместо передачи значения.

в Page2.zul

 <zk>
      <label id="label1" ></label>
    <zscript>
      doDisplay(String value) {
         Textbox textbox=(Textbox)((Include)label1.getSpaceOwner()).getSpaceOwner().getFellowIfAny("textbox1");
         label1.setValue(textbox.getValue());
      }
    </zscript>
    </zk>
0 голосов
/ 04 февраля 2012

Мое предложение состоит в том, чтобы использовать EventQueue вместо этого, чтобы предотвратить соединение двух файлов zul.

Подробнее, пожалуйста, обратитесь к примеру кода http://zkfiddle.org/sample/379s7ev/3-A-sample-for-using-Event-queue-to-talk-with-other-include

...