ページを更新した後にEventQueue.subscribe
メソッドからモデルを設定できません。ページを更新した後、EventQueue.subscribeメソッドからリストボックスのモデルを設定できません
私はメインページ.zul
と.zul
を含んでいます。各zulには別々のコントローラがあります。私は、ユーザがインクルードページのlistbox
をクリックし、顧客オブジェクトを渡すと、インクルードされたページのコントローラからイベントを公開します。
eq = EventQueues.lookup("CLIENTS", EventQueues.DESKTOP, true);
eq.publish(new Event("onClick", null, customer));
私のメインの.zul
ページのコントローラでは、イベントを受信して顧客オブジェクトを取得します。次に、そのIDに基づいて、メイン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");
}
}
});
初めて正常に動作します。私はイベントを受け取り、オブジェクトを取得し、successfulyモデルとリストボックスを提供します。しかし、別のページに行って戻り値を取得すると、NullPointerExceptionが返されます。ログファイルでは、セッションが同じで、ページが破棄されたが、デスクトップは生きていることに気付きました。私はZK 5.0.10を使用しています。 org.zkossでorg.zkoss.zk.ui.AbstractComponent.smartUpdate(AbstractComponent.java:1487)で
org.zkoss.zk.ui.AbstractComponent.getAttachedUiEngine(AbstractComponent.java:387)で
.zk.ui.AbstractComponent.smartUpdate(AbstractComponent.java:1462)at org.zkoss.zk.ui.AbstractComponent.smartUpdate(AbstractComponent.java:1495)at org.zkoss.zul.Listbox.resetDataLoader(Listbox.java:2982) )com.is.sdbooks.controller.ComposerTest.refreshModel(ComposerTest.java:169)com.is.sdbooks.controller.ComposerTest.onDoubleClick $のorg.zkoss.zul.Listbox.setModel(Listbox.java:2377) sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)at sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース)(sun.reflect.DelegatingMethodAcces)のdataGrid(ComposerTest.java:180) org.zkoss.zkoss.zk.uiのorg.zkoss.zk.ui.event.GenericEventListener.onEvent(GenericEventListener.java:81)のjava.lang.reflect.Method.invoke(不明なソース)のsorImpl.invoke(不明なソース) .impl.EventProcessor.process0(EventProcessor.java:192)at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138)at org.zkoss.zk.ui.event.Events.sendEvent(イベント.java:306)at 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。 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)at org.zkoss.zk.au.http.DHtmlUpdateServle org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:465)のjavax.servlet.http.HttpServlet.service(HttpServlet.java:637)のt.doGet(DHtmlUpdateServlet.java:457) .servlet.http.HttpServlet.service(HttpServlet.java:717)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)at org.apache.catalina.core。 org.apache.catalina.valves.ErrorReportValve.invoke(StandardRequestValue.java:102)のorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)でのStandardHostValve.invoke(StandardHostValve.java:127) .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)at org.apache.coyote.http11.Http11Processor.process(Http11Proc org.apache.tomcat.util.net.JIoEndpointの$ Http11ConnectionHandler.process(Http11Protocol.java:588)$ Worker.run(JIoEndpoint.java:489)のorg.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process