-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi All,
Need you to help.
I have 2 zul page, one is main page and another one is popup page. In popup page, when user click "close popup" button, I want to send event back to main page and close the popup. But it show error "Unknown exception: java.lang.StackOverflowError" when the popup is closed.
>> at org.zkoss.spring.web.context.request.IdSpaceScope.get(IdSpaceScope.java:50)
>> at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325)
>> at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>> at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:33)
>> at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.getTarget(Cglib2AopProxy.java:653)
>> at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:604)
>> at org.zkoss.zul.Window$$EnhancerByCGLIB$$ad437c54.getAttribute(<generated>)
>> at org.zkoss.spring.impl.ZKProxy$1.getSelf(ZKProxy.java:129)
>> at org.zkoss.spring.web.context.request.IdSpaceScope.get(IdSpaceScope.java:50)
>> at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325)
>> at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>> at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:33)
>> at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.getTarget(Cglib2AopProxy.java:653)
>> at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:604)
>> at org.zkoss.zul.Window$$EnhancerByCGLIB$$ad437c54.getAttribute(<generated>)
I try to test ZK without ZK Spring 3, it work. And I test with ZK Spring 1.2, it work.
I don't know, this is bug of ZK Spring 3 or I should do something for this.
My code
Main page controller
@Controller("scopeTestCtrl") @Scope("execution") public class ScopeTestController extends GenericSpringComposer { @Autowired private ScopeTestModel scopeTestModel; @Autowired private Window scopeTestWin; @Autowired private Button openPopup; private boolean sameObj = false; @EventHandler("scopeTestWin.onCreate") public void doCreateWindow(Event event){ System.out.println("scopeTestCtrl"); if(sameObj){ System.out.println("old bean"); }else{ System.out.println("new bean"); sameObj = true; } if(scopeTestModel.getModelName() != null){ System.out.println("old model bean"); }else{ System.out.println("new model bean"); scopeTestModel.setModelName("Main Window"); } System.out.println("openPopup-->[" + openPopup.hashCode() + "] label=" + openPopup.getLabel()); } @EventHandler("openPopup.onClick") public void doClickOpenPopup(Event event) throws SuspendNotAllowedException, InterruptedException{ System.out.println("scopeTestCtrl openPopup"); Window popupWin = (Window) Executions.getCurrent().createComponents("/exam23/scope_test_popup.zul",scopeTestWin, null); popupWin.doModal(); } @EventHandler("scopeTestWin.onReturnParam") public void doReturnParam(Event event){ System.out.println("close popup"); } }
@Controller("scopeTestPopupCtrl") @Scope("execution") public class ScopeTestPopupController extends GenericSpringComposer { @Autowired private ScopeTestModel scopeTestModel; @Autowired private Button closePopup; private boolean sameObj = false; private Component win; @EventHandler("closePopup.onClick") public void doClickOpenPopup(Event event) throws SuspendNotAllowedException, InterruptedException{ Events.postEvent(new Event("onReturnParam",win.getParent(),null)); win.setParent(null); win.detach(); } @Override public void doAfterCompose(org.zkoss.zk.ui.Component comp) throws Exception { super.doAfterCompose(comp); win = comp; } }
Asked: 2011-08-29 13:50:00 +0800
Seen: 518 times
Last updated: Aug 29 '11