Zk, wie Sie zu erreichen enthalten .zul-Seite-Komponente von id?
Kann ich nicht erreichen Komponente von id in der enthalten .zul-Seite. Ich habe eine main.zul mit einem controller und ich brauche, um eine Komponente in der zul-Seite über die java-controller-Klasse, aber es gibt null zurück.
Ich weiß, die enthalten Methode erstellt eine neue id der Raum aber gibt es irgendeinen Weg, um diese Komponente?
UPDATE
Hier ist mein code:
den wichtigsten zul Seite
<?page title="DealerVizard.zul"?>
<?page id="main" ?>
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./Dealer" ?>
<zk>
<style src="/resources/css/default.css" />
<window id="Dealer" class="index"
apply="com.i2i.prm.controller.IndexController">
<div class="content" width="100%">
<tabbox id="tb" forward="onSelect=onSelect">
<tabs id="tabs">
<tab id="info" label="INFO" />
<tab id="create" label="CREATE" />
<tab id="edit" label="EDIT" />
<tab id="test" label="TEST PANEL(LIST BOX)" />
</tabs>
<tabpanels>
<tabpanel id="DealerInfo">
<include id="DealerInfoContent"
src="View/Dealer/DealerInfo.zul" />
</tabpanel>
<tabpanel id="DealerCreate">
<include id="DealerCreateContent"
src="View/Dealer/DealerCreate.zul" />
</tabpanel>
<tabpanel id="DealerEdit">
<include id="DealerEditContent"
src="View/Dealer/DealerEdit.zul" />
</tabpanel>
<tabpanel id="PagingListBox">
<include id="PagingListBoxContent" //Included here
src="View/TEST/PagingListBox.zul" />
</tabpanel>
</tabpanels>
</tabbox>
</div>
</window>
</zk>
PagingListBox.zul (Inklusive Seite)
<?page id="list" ?>
<zk>
<grid width="100%">
<columns>
<column label="" />
</columns>
<rows>
<row>
<listbox id="listModel" width="100%" height="100%"
visible="true" span="true" pagingPosition="top" rows="20"
selectedItem="@{DealerController.selected}"
model="@{DealerController.userList}"
forward="onSelect=//main/Dealer.onSelect">
<auxhead>
<auxheader colspan="1">
<textbox
value="@{DealerController.searchUser.name}" maxlength="9"
id="searchCO_ID" forward="onChanging=//main/Dealer.onSearch"
width="100%">
</textbox>
</auxheader>
<auxheader colspan="1">
<textbox
value="@{DealerController.searchUser.surname}" maxlength="21"
id="searchMSISDN" forward="onChanging=//main/Dealer.onSearch"
width="100%">
</textbox>
</auxheader>
<auxheader colspan="1">
</auxheader>
</auxhead>
<listhead>
<listheader label="Name"
sort="auto(UPPER(name))" />
<listheader label="Surname"
sort="auto(UPPER(surname))" />
<listheader label="Delete ?" />
</listhead>
<listitem self="@{each=USERLIST}">
<listcell>
<label value="@{USERLIST.user.name}" />
<textbox
value="@{DealerController.tmpUser.name}" visible="false" />
</listcell>
<listcell>
<label value="@{USERLIST.user.surname}" />
<textbox
value="@{DealerController.tmpUser.surname}" visible="false" />
</listcell>
<listcell>
<button label="Update"
forward="onClick=//main/Dealer.onUpdate" visible="false" />
<button image="icons/edit-delete.png"
label="Delete" forward="onClick=//main/Dealer.onDelete"
width="100%" disabled="true" />
<button label="Save"
forward="onClick=//main/Dealer.onSave" visible="false" />
<button label="Cancel"
forward="onClick=//main/Dealer.onCancel" visible="false" />
</listcell>
</listitem>
</listbox>
<paging id="pagingData" pageSize="20" />
</row>
</rows>
</grid>
</zk>
IndexCOntroller.java
public class IndexController extends GenericForwardComposer {
private List<User> userList = new ArrayList<User>() ;
AnnotateDataBinder binder;
Tabbox tb;
Window Dealer;
private int pageCount=0;
@Override
public void doAfterCompose(Component comp) throws Exception {
//TODO Auto-generated method stub
super.doAfterCompose(comp);
comp.setVariable(comp.getId() + "Controller", this, true);
binder = (AnnotateDataBinder) Dealer.getVariable("binder", true);
System.out.println(Path.getComponent("//list/listModel"));
}
public IndexController() {
//TODO Auto-generated constructor stub
}
}
InformationsquelleAutor Ercan | 2011-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise würde ich nicht empfehlen, mit
Path.getComponent()
Weg, um den Zugriff auf andere Komponenten, wie code der Anwendung wird eng gekoppelt mit der Komponente Struktur in Ihre Seite anzeigen.In Ihrem Fall, dass Sie einfachste Weg ist
AbstractComponent#getFellow(String compId))
Methode also für zB.So, in Zukunft, auch wenn Sie fügen Sie eine beliebige andere Komponente in Ihrem ZUML Seite, bevor listbox-Ihr code wird immer noch funktionieren.
UPDATE BTW: es war eine interessante Beitrag auf dieses Thema sehr auf ZK-blog vor kurzem
InformationsquelleAutor kachhalimbu
wenn Ihr include-id haben, können Sie mit dollar-Zeichen, um die inneren Komponenten
test.zul
können Sie "inc$lab1" Holen Sie sich das label im test.zul
InformationsquelleAutor Ryan Wu
Können Sie den Zugriff auf jede Komponente in jedem anderen Raum-id mit zscript oder java. wenn es auf der gleichen Seite, aber im anderen Fenster dann (Komponente B im Fenster Ein):
wenn es auf einer anderen Seite dann (Komponente B in Fenster A auf Seite P):
Können Sie finden die Dokumentation hier: http://books.zkoss.org/wiki/ZK%20Developer%27s%20Reference/UI%20Composing/ID%20Space
Dein code sieht OK für mich, ich machte ein kleines mock-up, um es zu testen (mit ZK 3.6.4). //Liste/das listmodel beheben sollten, die listbox in der im Lieferumfang enthaltenen ZUL. Ist es möglich, die Sie verwendet haben, den Seite-id "Liste" in mehreren ZUL-Dateien, so ist es nicht einzigartig?
InformationsquelleAutor Miklos Csuka
Können Sie fügen Sie in Ihrem IndexController.java:
diese Weise können Sie den Zugriff auf die enthaltene Komponente innerhalb der übergeordneten Komponist.
(Ich würde vorschlagen, zu verwenden camelCase-ids für ihn, obwohl).
InformationsquelleAutor bartolomeon_n