-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hello
I have code to show window use GenericForwardComposer and its ok, but while i try to chang use Window, i get error and window can't show.
this my code
Price.zul
<?xml version="1.0" encoding="UTF-8"?> <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./winPrice" ?> <?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?> <zk xmlns="http://www.zkoss.org/2005/zul" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd"> <window id="winPrice" width="650px" border="normal" use="controller.zk.PriceController"> <!--before apply="$PriceController"--> <tabbox id="tb" height="400px"> <tabs id="tabs"> <tab id="addData" label="Add Data" /> </tabs> <tabpanels> <tabpanel> <h:form id="formPrice" action=""> <grid> <columns> <column width="250px"/><column/> </columns> <rows> <row spans="2"> <div align="center"> <label style="font-weight:bold;"/> </div> </row> <row> <label id="lblCode" value="Document Code : "/> <textbox id="txtCode" /></row> <row> <label id="lblDes" value="Description :"/> <textbox id="txtDescription" cols="100"/></row> </rows> </grid> </h:form> </tabpanel> </tabpanels> </tabbox> </window> </zk>
@org.springframework.stereotype.Component("PriceController") @Scope("prototype") public class PriceController extends Window { //before used GenericForwardComposer @Autowired private PriceService priceService; public void onCreate() throws Exception { System.out.println("show oncreate"); } }
public class FormWindowComposer extends SelectorComposer<Component>{ private final static Logger logger = Logger.getLogger(FormWindowComposer.class); @Wire private Tree tree; private AdvancedTreeModel formWindowTreeModel; @Wire Div contentDiv; @Wire Center center; protected Tabs tabsIndexCenter; public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); formWindowTreeModel = new AdvancedTreeModel(new FormWindowList().getRoot()); tree.setItemRenderer(new FormWindowTreeRenderer()); tree.setModel(formWindowTreeModel); } private final class FormWindowTreeRenderer implements TreeitemRenderer<FormWindowTreeNode> { //try{ @Override public void render(final Treeitem treeItem, FormWindowTreeNode treeNode, int index) throws Exception { FormWindowTreeNode ctn = treeNode; FormWindow formWindow = (FormWindow) ctn.getData(); Treerow dataRow = new Treerow(); dataRow.setParent(treeItem); treeItem.setValue(ctn); treeItem.setOpen(ctn.isOpen()); if (!isCategory(formWindow)) { // formWindow Row Hlayout hl = new Hlayout(); hl.appendChild(new Image(formWindow.getProfilepic())); hl.appendChild(new Label(formWindow.getName())); hl.setSclass("h-inline-block"); Treecell treeCell = new Treecell(); treeCell.appendChild(hl); dataRow.appendChild(treeCell); dataRow.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener<Event>() { @Override public void onEvent(Event event) throws Exception { try{ FormWindowTreeNode clickedNodeValue = (FormWindowTreeNode) ((Treeitem) event.getTarget().getParent()).getValue(); String form=((FormWindow) clickedNodeValue.getData()).getName(); checkForm(form); }catch(Exception e){ e.printStackTrace(); } } }); } else { // Category Row dataRow.appendChild(new Treecell(formWindow.getCategory())); } } private boolean isCategory(FormWindow formWindow) { return formWindow.getName() == null; } } <b >private void checkForm(String form) throws InterruptedException{ if(form.equalsIgnoreCase("Price")){ showPage("/WEB-INF/zk/Price.zul",form.trim(),form); } }</b> <b >private void showPage(String zulFilePathName,String tabID, String tabLabel) throws InterruptedException { try { // TODO get the parameter for working with tabs from the application params final int workWithTabs = 1; if (workWithTabs == 1) { Tabs tabs = (Tabs) center.getFellow("contentDiv").getFellow("tabBoxIndexCenter").getFellow("tabsIndexCenter"); /** * Check if the tab is already opened than select them and<br> * go out of here. If not than create them.<br> */ Tab checkTab = null; try{ checkTab = (Tab) tabs.getFellow("tab_" + tabID.trim()); checkTab.setSelected(true); } catch (final ComponentNotFoundException ex) { // Ignore if can not get tab. } if (checkTab == null) { final Tab tab = new Tab(); tab.setId("tab_" + tabID.trim()); if (tabLabel != null) { tab.setLabel(tabLabel.trim()); } else { tab.setLabel(tabLabel.trim()); } tab.setClosable(true); tab.setParent(tabs); final Tabpanels tabpanels = (Tabpanels) center.getFellow("contentDiv").getFellow("tabBoxIndexCenter").getFellow("tabsIndexCenter").getFellow("tabpanelsBoxIndexCenter"); final Tabpanel tabpanel = new Tabpanel(); tabpanel.setHeight("100%"); tabpanel.setStyle("padding: 0px;"); tabpanel.setParent(tabpanels); Executions.createComponents(zulFilePathName, tabpanel, null); tab.setSelected(true); } } else { Executions.createComponents(zulFilePathName, center, null); } if (logger.isDebugEnabled()) { logger.debug("--> calling zul-file: " + zulFilePathName); } } catch (final Exception e) { e.printStackTrace(); //Messagebox.show(e.toString()); } } </b> }
java.lang.NullPointerException at org.zkoss.zk.ui.AbstractComponent.isAutoId(AbstractComponent.java:292) at org.zkoss.zk.ui.AbstractComponent.checkIdSpacesDown(AbstractComponent.java:349) at org.zkoss.zk.ui.AbstractComponent.checkIdSpacesDown(AbstractComponent.java:345) at org.zkoss.zk.ui.AbstractComponent.checkParentChild(AbstractComponent.java:1114) at org.zkoss.zk.ui.AbstractComponent.insertBefore(AbstractComponent.java:1126) at org.zkoss.zk.ui.impl.AbstractUiFactory.newComponent(AbstractUiFactory.java:95) at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:798) at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:767) at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:676) at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:738) at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:698) at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:640) at org.zkoss.zk.ui.impl.UiEngineImpl.createComponents(UiEngineImpl.java:1021) at org.zkoss.zk.ui.impl.AbstractExecution.createComponents0(AbstractExecution.java:246) at org.zkoss.zk.ui.impl.AbstractExecution.createComponents(AbstractExecution.java:238) at org.zkoss.zk.ui.Executions.createComponents(Executions.java:179) <b >at zk.wnd.form.FormWindowComposer.showPage(FormWindowComposer.java:199) at zk.wnd.form.FormWindowComposer.checkForm(FormWindowComposer.java:137) at zk.wnd.form.FormWindowComposer.access$100(FormWindowComposer.java:20) at zk.wnd.form.FormWindowComposer$FormWindowTreeRenderer$1.onEvent(FormWindowComposer.java:76) </b> at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:2741) at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2712) at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2653) at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136) at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1699) at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1484) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1201) at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:558) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:456) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:464) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)
Hi onsir,
Any reason why you are not using
<window .... use="${priceController}">
Well, if you are using fully qualified class name as the value for use attribute then ZK will instantiate a new instance of that class and Spring framework will have no chance to do any injection of services into the instance as it isn't instantiated and maintained under Spring's control. If you still want to use fully qualified class name instead of EL expression then you need to get the required spring bean yourself with SpringUtil#getbean(String) (refer javadocs )
Asked: 2012-08-01 08:50:52 +0800
Seen: 222 times
Last updated: Aug 06 '12