-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi, everyone.
I've got a lot a trouble to solve the following problem:
First, i've had a zul file, called fornecedor, where this is the code:
Fornecedor.zul
<?page title="new page title" contentType="text/html;charset=UTF-8"?> <?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?> <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./fornecedorBorderlayout"?> <?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?> <zk> <style> .text-filter-card{ margin-bottom: 5px; margin-top: 5px; height: 24px; valign: middle; font-size: 18px; color:gray; } .icon-filter-card{float:left; margin: 5px; valign: middle; } .button-filter-card{float:right; padding: 3px 12px; font-size: 16px; margin-bottom: 5px; margin-top: 5px;} .button-toolbar-left{ margin:4px 0px 4px 4px; padding: 4px 6px; float:left; } .button-toolbar-right{ margin:4px 0px 4px 4px; padding: 4px 6px; float:right; } </style> <zscript><![CDATA[ import com.laborapix.purchase.vendor.model.entity.Fornecedor; import com.laborapix.purchase.vendor.ui.FornecedorController; import com.mitahtech.iguassu.model.entity.GenericEntity; import org.zkoss.zul.Messagebox; import com.laborapix.main.dbinitconfig.DBInitController; import org.zkoss.zk.ui.event.EventListener; FornecedorController fornecedorController = new FornecedorController(); Execution exec = Executions.getCurrent(); fornecedorController.getBasicInformation(); List getallFornecedor; Set telefones = new HashSet(); ListModel listFornecedor; try { getallFornecedor = fornecedorController.getAll(); listFornecedor = new BindingListModelList(getallFornecedor, true); } catch (Exception e) { e.printStackTrace(); } long idSelecionado = -1; void refresh() { //prepare the AnnotateDataBinder System.out.println("Dentro do bind getAll"); List getallFornecedor; try { getallFornecedor = fornecedorController.getAll(); ((Listbox) fornecedorWindowList.getFellow("listboxFornecedor")) .setModel(new BindingListModelList(getallFornecedor, true)); } catch (Exception e) { e.printStackTrace(); } } void clear() { //prepare the AnnotateDataBinder System.out.println("Deixando componentes habilitados"); idFornecedor.setText(""); ((Button) windowMenuFornecedor.getFellow("buttonCancelFornecedor")) .setVisible(true); ((Button) windowMenuFornecedor.getFellow("buttonSaveFornecedor")) .setVisible(true); ((Button) windowMenuFornecedor.getFellow("buttonDeleteFornecedor")) .setVisible(false); ((Listbox) fornecedorWindowList.getFellow("listboxFornecedor")) .clearSelection(); } void setToList(Fornecedor fornecedor) { try { telefones = fornecedor.getTelefones(); System.out.println("&&&" + telefones); } catch (Exception e) { e.printStackTrace(); } } void populate() { //prepare the AnnotateDataBinder Fornecedor fornecedor2 = new Fornecedor(); fornecedor2.setID(idSelecionado); try { System.out.println("%%%entrou no Populate!!"); Fornecedor fornecedor = (Fornecedor) fornecedorController .getById(fornecedor2); idFornecedor.setValue(fornecedor.getID().toString()); setToList(fornecedor); } catch (Exception e) { e.printStackTrace(); } turnEditableOff(); ((Button) windowMenuFornecedor.getFellow("buttonDeleteFornecedor")) .setVisible(true); ((Button) windowMenuFornecedor.getFellow("buttonEditFornecedor")) .setVisible(true); } void delete() { Fornecedor fornecedor = new Fornecedor(); fornecedor.setID(idSelecionado); try { String message = fornecedorController.delete(fornecedor); if (message != null) { alert(message); } else { refresh(); } } catch (Exception e) { e.printStackTrace(); } clear(); ((Button) windowMenuFornecedor.getFellow("buttonDeleteFornecedor")) .setVisible(false); ((Button) windowMenuFornecedor.getFellow("buttonEditFornecedor")) .setVisible(false); ((Button) windowMenuFornecedor.getFellow("buttonCancelFornecedor")) .setVisible(false); ((Button) windowMenuFornecedor.getFellow("buttonSaveFornecedor")) .setVisible(false); } void getCardData() { Fornecedor fornecedor = new Fornecedor(); try { System.out.println("###entrou no getCArd"); if (!idFornecedor.getValue().equals("")) { System.out.println(idFornecedor.getValue()); fornecedor.setID(Long.parseLong(idFornecedor.getValue())); } setToList(fornecedor); fornecedorController.create(fornecedor); refresh(); ((Button) windowMenuFornecedor.getFellow("buttonCancelFornecedor")) .setVisible(false); ((Button) windowMenuFornecedor.getFellow("buttonSaveFornecedor")) .setVisible(false); clear(); } catch (NullPointerException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } void callPopup() { Map arg1 = new HashMap(); Window tel = new Window(); if (idSelecionado != -1) { if (telefones != null) { telBox.getChildren().clear(); arg1.put("teste", true); arg1.put("telefones", telefones); arg1.put("parentID", idSelecionado); tel = (Window) Executions.createComponents( "/web/view/popups/TelefonePopupList.zul", telBox, arg1); } } else { telBox.getChildren().clear(); arg1.put("telefones", telefones); arg1.put("parentID", idSelecionado); tel = (Window) Executions.createComponents( "/web/view/popups/TelefonePopupList.zul", telBox, arg1); } } void showReports() { System.out.println("ShowReports"); } void showHelp() { System.out.println("ShowHelp"); } ]]> </zscript> ... <window id="fornecedorWindowList" width="400px"> <listbox id="listboxFornecedor" mold="paging" multiple="true" model="${listFornecedor}" onCreate="callPopup()" onSelect=" idSelecionado = ((Fornecedor)listboxFornecedor.getSelectedItem().getValue()).getID(); populate(); callPopup(); "> <listhead height="32px"> <listheader label="${c:l('nomeOuRazaoSocialFornecedor')}" /> <listheader label="${c:l('numCadastroNacionalFornecedor')}" /> </listhead> <listitem self="@{each=fornecedor}" height="24px" value="@{fornecedor}"> <listcell label="@{fornecedor.nomeOuRazaoSocial}"> </listcell> <listcell label="@{fornecedor.numCadastroNacional}"> </listcell> </listitem> </listbox> </window> ... <groupbox mold="3d" width="100%" closable="true"> <caption label="${c:l('telefonesFornecedor')}" /> <window id="telBox" /> </groupbox> </zk>
thats is just part of the code.
i take the value of the set telefones, a HashSet, and pass it as a param from the other zul file, telefone:
telefone.zul
<?page title="Telefone" contentType="text/html;charset=UTF-8"?> <?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?> <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./listBoxTelefone" ?> <zk> <zscript><![CDATA[ import com.laborapix.common.persondata.model.entity.Telefone; import com.laborapix.common.persondata.ui.TelefoneController; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zul.Messagebox; Execution exec = Executions.getCurrent(); Map map = exec.getArg(); TelefoneController telefoneController = new TelefoneController(); boolean update = false; telefoneController.getBasicInformation(); ListModel listTipoTelefoneTelefone = new BindingListModelList( telefoneController.getData("tipoTelefone"), true); long parentID; Set telefones; if (map.containsKey("teste")) { telefones = (Set) map.get("telefones"); parentID = (Long) map.get("parentID"); } else { Set set = new HashSet(); telefones = set; } List listTelefone = new ArrayList(telefones); ListModel listmodelTelefone = new BindingListModelList(listTelefone, true); //SETOU OS VALORES PARA EXIBICAO DOS DADOS Telefone telefoneSelecionado; int idSelecionado; //Metodo que remove o elemento selecionado da lista //Uma mensangem e exibida, se deseja realmente excluir void delete() { if (idSelecionado != -1) { Messagebox.show("Deseja realmente excluir?", "Pergunta", Messagebox.YES | Messagebox.NO, Messagebox.QUESTION, new EventListener() { public void onEvent(Event evt) { switch (((Integer) evt.getData()).intValue()) { case Messagebox.YES: //the Yes button is pressed so delete listBoxTelefone.removeItemAt(idSelecionado); idSelecionado = -1; editTelefoneButton.setDisabled(true); deleteTelefoneButton.setDisabled(true); break; case Messagebox.NO: //do nothing //the No button is pressed break; } } }); } } void refresh() { List list = (List) listBoxTelefone.getListModel(); telefones.addAll(list); // here, i get all the elements of the list and add all in the set telefones // i will need this data in the fornecedor file System.out.println("***Parent " + telefones); } ]]> </zscript> <listbox fixedLayout="true" id="listBoxTelefone" mold="paging" selectedItem="@{selected}" pageSize="5" model="${listmodelTelefone}" onSelect="telefoneSelecionado = (Telefone)listBoxTelefone.getSelectedItem().getValue(); idSelecionado = listBoxTelefone.getSelectedItem().getIndex(); editTelefoneButton.setDisabled(false); deleteTelefoneButton.setDisabled(false);"> <listhead> <listheader label="${c:l('Telefone.tipoTelefone.nome')}" /> <listheader label="${c:l('Telefone.numeroTelefone')}" /> <listheader label="${c:l('Telefone.codCidade')}" /> <listheader label="${c:l('Telefone.codPais')}" /> </listhead> <listitem self="@{each=telefone}" value="@{telefone}" height="24px"> <listcell label="@{telefone.tipoTelefone.nome}"></listcell> <listcell label="@{telefone.numeroTelefone}"></listcell> <listcell label="@{telefone.codCidade}"></listcell> <listcell label="@{telefone.codPais}"></listcell> </listitem> </listbox> <separator /> <button id="deleteTelefoneButton" label="Excluir" onClick="delete();" width="100px" height="32px" image="/web/view/resources/images/toolbar/trash_20.png" disabled="true" /> <button id="bla" label="Refresh" onClick="refresh()" /> <\zk>
Can someone say how i can get the set telefones that was update in the refresh() in my telkefone.zul nad pass the set to use it in the fornecedor.zul???
thanks a lot
Nilson
ZK Developer's Guide/ZK in Depth/Inter Page, App Communication
ZK Developer's Guide/ZK in Depth/Inter Page, App Communication
What's the flow of your app? Are Fornecedor.zul and telefone.zul being displayed on the page simultaneously? I don't see where telefone.zul is doing anything to open Fornecedor.zul. If you're going to open Fornecedor.zul from telefone.zul using Executions.createComponents(".../Fornecedor.zul", <some parent>, myArgs); then you can construct myArgs like you did arg1 in Fornecedor.zul.
But, to be honest, the first thing I'd do is refactor all of this and move all the zscript out of the .zul files into GenericForwardComposer's and tie them to the .zul with the apply attribute. I know you didn't ask for this kind of advice, but you're getting it anyway....:-)
Then, in the doAfterCompose() of the composer/controller for Fornecedor.zul, you'll have the args autowired variable ready for use.
Asked: 2011-03-25 14:00:42 +0800
Seen: 419 times
Last updated: Mar 26 '11