如果我有 2 个 .zul,一个有一个列表框,另一个是模态窗口。他们可以使用相同的控制器吗?我只是无法让它工作。
这个问题基本上恢复了,我必须apply="myController"
在两个.zul中使用吗?如果我这样做,我会在 处得到 nullpointerException myList
,因为我认为 zk 正在实例化 2 个控制器对象,并且模态不存在myList
。但如果我不在 modal.zul 上应用控制器,当我按下按钮时不会发生任何事情。
如何让 2 .zul 使用相同的控制器实例?
邮件.zul
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
<zk>
<hlayout>
<div id="winDiv" apply="com.company.controller.ProductController">
<vbox>
<listbox id="myList" width="690px" height="300px" >
<listhead>
<listheader hflex="min" label="id" sort="auto(id)" />
<listheader hflex="2" label="name" sort="auto(name)" />
<listheader hflex="4" label="description" sort="auto(description)" />
<listheader hflex="min" label="opcion"/>
</listhead>
</listbox>
</vbox>
</div>
<button label="new" id="new"/>
</hlayout>
</zk>
modal.zul
<?xml version="1.0" encoding="UTF-8"?>
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<window id="modalProductType" title="Nuevo tipo de producto" border="normal" width="420px"
closable="true" position="center,center" **apply="com.company.controller.ProductController"**>
<grid>
<columns>
<column hflex="1"/>
<column hflex="2"/>
</columns>
<rows>
<row>
Clave:
<textbox hflex="1" value="@{product.id}" readonly="true"/>
</row>
<row>
Nombre:
<textbox id="txtname" value="@{product.name}" hflex="1" tabindex="1" />
</row>
<row>
Description:
<textbox value="@{product.description}" rows="5" hflex="1" tabindex="2" />
</row>
<row>
<cell colspan="2" style="text-align:center">
<hlayout>
<button width="100px" id="save" label="Aceptar"/>
<button width="100px" label="close"/>
</hlayout>
</cell>
</row>
</rows>
</grid>
</window>
产品控制器.java
public class ProductTypeController extends SelectorComposer {
@WiredVariable
private ProductTypeService productTypeService;
@Wire
private Listbox myList;
//methods...
}