如何创建与动态文本框的通信
how to create communication with dynamic text box
如何在没有id的动态文本框之间进行通信。
在正常情况下我们可以有一些事件名称 onchange
和 etc
。但在动态组件中。我们没有 link 的密钥 (id)。喜欢 onchange$id
然后做点什么 "".
那么在动态组件的情况下,如何从动态组件中获取值呢?请提供想法。
因为你的问题不是很精确(关于你如何动态创建这些组件 - java 或 zul 模板)这里有 2 个基本方法:
来自 java 代码:
创建新组件后,只需以编程方式添加事件侦听器,无需任何基于约定的方法名称。
//create dynamically anywhere
Textbox someInput = new Textbox();
someInput.setParent(someParent);
someInput.addEventListener(Events.ON_CHANGE, this::onChangeSomeInput);
//someInput.addEventListener(Events.ON_CHANGE, (InputEvent event) -> {...});
...
public void onChangeSomeInput(InputEvent event) {
Textbox someInput = event.getTarget();
someInput.getValue();
}
来自 zul 代码:
在这种情况下,event forwarding 是首选工具,它允许您将事件委托给具有 id
的父组件
<grid id="mygrid">
<template name="model">
<row>
<textbox forward="onChange=mygrid.onChangeSomeInput(${each})"/>
</row>
</template>
</grid>
然后你可以像这样实现一个 composer 方法
public void onChangeSomeInput$mygrid(ForwardEvent forwardEvent) {
InputEvent event = (InputEvent)forwardEvent.getOrigin();
Object each = forwardEvent.getData();
}
(这段代码是我自己写的,所以请原谅 typos/errors,我很乐意提供 运行 示例,以防您具体说明问题)
如何在没有id的动态文本框之间进行通信。
在正常情况下我们可以有一些事件名称 onchange
和 etc
。但在动态组件中。我们没有 link 的密钥 (id)。喜欢 onchange$id
然后做点什么 "".
那么在动态组件的情况下,如何从动态组件中获取值呢?请提供想法。
因为你的问题不是很精确(关于你如何动态创建这些组件 - java 或 zul 模板)这里有 2 个基本方法:
来自 java 代码:
创建新组件后,只需以编程方式添加事件侦听器,无需任何基于约定的方法名称。
//create dynamically anywhere
Textbox someInput = new Textbox();
someInput.setParent(someParent);
someInput.addEventListener(Events.ON_CHANGE, this::onChangeSomeInput);
//someInput.addEventListener(Events.ON_CHANGE, (InputEvent event) -> {...});
...
public void onChangeSomeInput(InputEvent event) {
Textbox someInput = event.getTarget();
someInput.getValue();
}
来自 zul 代码:
在这种情况下,event forwarding 是首选工具,它允许您将事件委托给具有 id
的父组件<grid id="mygrid">
<template name="model">
<row>
<textbox forward="onChange=mygrid.onChangeSomeInput(${each})"/>
</row>
</template>
</grid>
然后你可以像这样实现一个 composer 方法
public void onChangeSomeInput$mygrid(ForwardEvent forwardEvent) {
InputEvent event = (InputEvent)forwardEvent.getOrigin();
Object each = forwardEvent.getData();
}
(这段代码是我自己写的,所以请原谅 typos/errors,我很乐意提供 运行 示例,以防您具体说明问题)