【发布时间】:2014-05-30 19:23:05
【问题描述】:
使用 GWT,我遇到了 SimpleCheckBox.wrap() 方法的问题,因为它在 DevMode 中产生了 AssertionError。我曾经通过添加仅在GWT.isScript() 为真时才执行的代码来解决这个问题。我现在在使用 SuperDevMode 时面临同样的挑战,问题是:有没有一种方法可以在运行时从源代码中识别 superdevmode?p>
提前致谢!
附:现在没有快速的方法来摆脱代码中的 .wrap() 调用,所以问题实际上仅限于运行模式识别。
更新。 1:
我创建了一个没有 .wrap() 方法的新“特殊”类,并将这些行添加到我的模块的 gwt.xml 文件中:
<set-property name="superdevmode" value="on"/>
<replace-with class="com.project.client.MyWidgetSuperdevmode">
<when-type-is class="com.jostleme.jostle.ui.rich.client.MyWidgetProdMode" />
<when-property-is name="superdevmode" value="on"/>
</replace-with>
并尝试了多种方法:通过书签编译,以旧方式重新编译项目,重新启动常规和代码服务器应用程序;并且在 sourcemaps 中只能看到类 MyWidgetProdMode。我究竟做错了什么?编译时会加载新类吗?
【问题讨论】:
-
如果断言失败,这强烈暗示您使用 SimpleCheckBox.wrap 不正确,可能是包装了一个未附加的元素,或者试图包装一个已经是子元素的元素另一个小部件。这两者都可能导致内存泄漏 - 尽量避免断言条件,而不是避免编译断言。
-
科林,是的,这是真的。小部件的初始化发生了,小部件尚未附加。稍后我会看看在附加时设置复选框值有多大。
标签: gwt checkbox assert gwt-super-dev-mode gwt-dev-mode