0

Change Use GenericForwardComposer to Window. Window can't show

asked 2012-08-01 08:50:52 +0800

onsir gravatar image onsir
132 2

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>



PriceController.java
@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>

}


error

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)



thanks

delete flag offensive retag edit

3 Replies

Sort by ยป oldest newest

answered 2012-08-06 06:15:53 +0800

ashishd gravatar image ashishd flag of Taiwan
1972 6

updated 2012-08-06 06:16:38 +0800

Hi onsir,
Any reason why you are not using

<window .... use="${priceController}">
as before?

link publish delete flag offensive edit

answered 2012-08-06 06:23:03 +0800

onsir gravatar image onsir
132 2

i'm not sure ,
i only want to try with diferrence mutiple coding

link publish delete flag offensive edit

answered 2012-08-06 08:42:21 +0800

ashishd gravatar image ashishd flag of Taiwan
1972 6

updated 2012-08-06 08:44:08 +0800

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 )

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2012-08-01 08:50:52 +0800

Seen: 222 times

Last updated: Aug 06 '12

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More