近两天被一个奇怪的form提交问题困扰,百思不得其解。
我在一个Window里放了一个FormPanel,表单里面的各字段对应一个pojo的属性,本来FormPanel没放在Window里时可以正常提交,但是在Window里提交后,后台用struts2对提交对象进行封装,发现封装后的对象为NULL,不能保存,一直没弄明白原因所在。
后来突然发现Window的close方法中有这样的解释:
close() : void
Closes the window, removes it from the DOM and destroys the window object. The beforeclose event is fired before the close happens and will cancel the close action if it returns false.
原来是在提交后,我调用了Window的close方法,将窗口关闭,这导致Window被destroy,故而后天获取到的对象为NULL
虽然在Window的定义里面加了 closeAction:'hide' ,但是,由于这里是调用Window的close方法,与手工点击窗口右上角的关闭按钮不同,此时应该用Window的hide方法,将窗口隐藏。
这个错误困扰了我两天了,现在终于解决了,记录一下。