2つの.zulがある場合、1つにはリストボックスがあり、もう1つはモーダルウィンドウです。同じコントローラーを使用できますか?私はそれを機能させることができません。
質問は基本的に再開しますapply="myController"
が、両方の.zulで使用する必要がありますか?これを行うと、zkmyList
が2つのコントローラーオブジェクトをインスタンス化しており、モーダルが存在しないため、でnullpointerExceptionが発生しますmyList
。しかし、modal.zulでコントローラーを適用しないと、ボタンを押しても何も起こりません。
2 .zulにコントローラーの同じインスタンスを使用させるにはどうすればよいですか?
mail.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>
ProductController.java
public class ProductTypeController extends SelectorComposer {
@WiredVariable
private ProductTypeService productTypeService;
@Wire
private Listbox myList;
//methods...
}