微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用GWT,有没有办法不加载在uibinder xml文件中声明的小部件?

我与GWT的一个常见设计是创建一个包含两个孩子的小部件:A和B.

我在与我的主要小部件相关联的uibinder文件中声明了这两个小部件A和B.

我想要做的是根据if语句加载或不加载小部件A.

理想的方法是为widget A设置provided = true,并在我不想加载这个widget时将widget A设置为null.但是GWT会引发错误.

有没有办法在uibinder中声明小部件然后不加载它们?

谢谢

编辑:经过大量讨论后,理想的方法是在optional = true时声明字段“provided = true”和“optional = true”,如果字段为null,则createAndBindUI不能抛出异常.这是一种干净的方法.

如果您认为GWT中必须存在此功能,请为此问题加注星标:
http://code.google.com/p/google-web-toolkit/issues/detail?id=5699

编辑2:使用托马斯描述的LazyPanel似乎是一种更好的方法来处理这个问题.

解决方法

我偶然发现了GWT问题,这导致我来到这里,所以这是我对它的看法,20个月之后.

使用LazyPanel并将其设置为visible =“false”,以便在您需要它之前不会构建它的内容(只需调用setVisible(true)来显示它,触发其内容的延迟初始化).

LazyPanel与UiBinder完全集成,因此您可以在同一个UiBinder模板中声明其内容,就好像它是一个SimplePanel一样,甚至无需创建LazyPanel的子类.见https://developers.google.com/web-toolkit/doc/2.4/DevGuideUiBinder#Lazy

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。