【发布时间】:2016-07-18 16:25:13
【问题描述】:
刷新页面后无法从EventQueue.subscribe 方法设置模型。
我有两个页面 - 我的主要 .zul 和包含 .zul 文件。每个 zul 都有单独的控制器。当用户单击包含页面上的listbox 并传递客户对象时,我会从包含页面的控制器发布事件。
eq = EventQueues.lookup("CLIENTS", EventQueues.DESKTOP, true);
eq.publish(new Event("onClick", null, customer));
在我的主要.zul 页面控制器中,我接收事件并检索客户对象。然后,根据它的 id,我向 main listbox 提供相应的数据。
eq = EventQueues.lookup("CLIENTS", EventQueues.DESKTOP, true);
eq.subscribe(new EventListener() {
public void onEvent(Event event) throws Exception {
if (!Executions.getCurrent().getDesktop().isAlive()) {
eq.unsubscribe(this);
return;
}
Customer customer = (Customer) event.getData();
if (customer != null){
id = customer.getId();// Need to identify what data to retrieve from database
crm_div.setVisible(false); // Listbox from included page
dataListbox.setVisible(true); // Listbox on main page
dataListbox.setModel(new DataListboxModel());// Go to database and extract relevant data
}
else{
alert("No client");
}
}
});
第一次,它工作正常。我收到事件,获取对象并成功提供带有模型的列表框。但是,当我转到另一个页面并返回时,我得到 NullPointerException。在日志文件中,我注意到会话是相同的,页面被破坏,但桌面还活着。我正在使用 ZK 5.0.10。
在
org.zkoss.zk.ui.AbstractComponent.getAttachedUiEngine(AbstractComponent.java:387) at org.zkoss.zk.ui.AbstractComponent.smartUpdate(AbstractComponent.java:1487) at org.zkoss.zk.ui.AbstractComponent.smartUpdate( AbstractComponent.java:1462) 在 org.zkoss.zk.ui.AbstractComponent.smartUpdate(AbstractComponent.java:1495) 在 org.zkoss.zul.Listbox.resetDataLoader(Listbox.java:2982) 在 org.zkoss.zul.Listbox .setModel(Listbox.java:2377) 在 com.is.sdbooks.controller.ComposerTest.refreshModel(ComposerTest.java:169) 在 com.is.sdbooks.controller.ComposerTest.onDoubleClick$dataGrid(ComposerTest.java:180) 在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.zkoss.zk.ui.event.GenericEventListener.onEvent(GenericEventListener.java:81) 在 org.zkoss.zk.ui.impl.EventProcessor.process0(EventProcessor.java:192) 在 o rg.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138) 在 org.zkoss.zk.ui.event.Events.sendEvent(Events.java:306) 在 org.zkoss.zk.ui。 event.Events.sendEvent(Events.java:329) at org.zkoss.zk.ui.AbstractComponent$ForwardListener.onEvent(AbstractComponent.java:3052) at org.zkoss.zk.ui.impl.EventProcessor.process0(EventProcessor. java:192) at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138) at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1626) at org.zkoss .zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1410) at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1134) at org.zkoss.zk.au.http.DHtmlUpdateServlet .process(DHtmlUpdateServlet.java:562) 在 org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:457) 在 org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:465) ) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 的 javax.servlet.http.HttpServlet.service(HttpServlet.java:637)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache。 catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 298) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 在 org.apache.tomcat.util .net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source)
【问题讨论】:
标签: listbox zk eventqueue