首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT:小部件/模板和ClientBundle

GWT:小部件/模板和ClientBundle
EN

Stack Overflow用户
提问于 2012-04-26 16:34:33
回答 1查看 344关注 0票数 0

小工具/模板和ClientBundleare的哪些组合是允许的,使用它们时是否有任何已知的限制/事项需要考虑。

Afaik类似于:

代码语言:javascript
复制
@Template(""{0}\"<p>not allowed</p>")
SafeHtml iconONLY(Widget w);

是不允许的,因为它会抛出错误。

就像这样

代码语言:javascript
复制
@Template("{0}<p>not allowed</p>")
SafeHtml iconONLY(Element e);

将它与iconONLY(w.getElement());之类的东西一起使用是可能的,但小部件会失去所有功能,因为它的附加方法没有正确执行。

总而言之,我假设模板并不打算在其中放置小部件!

ClientBundle用于保存内容小部件。在其他元素中使用它们,例如:

代码语言:javascript
复制
@Template("{0}<p>not allowed</p>")
SafeHtml iconONLY(SafeUrl safeurl);

使用iconONLYimageResource.getSafeUrl);调用可能会导致问题...

我的假设是正确的吗?请告诉我你是否尝试过/使用过其中一种组合,以及它是如何工作的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-26 23:44:23

第一种和第二种方法不起作用,因为您只是尝试将元素或小部件插入到字符串中(SafeHtml最终只是一个字符串)-当然,事件连接不会起作用。Widget不能像那样被克隆,除了组成它们的元素之外,还有更多的东西。

最后一个是错误的,因为您将Uri放入文本内容中-您的意思可能类似于

代码语言:javascript
复制
@Template("<img src=\"{0}\" /><p>not allowed</p>")
SafeHtml iconONLY(SafeUri safeurl);

要显示图像,请执行以下操作。

你想做什么?如果尝试显示图像,将SafeUri放在img标记中是一种选择,另一种选择是将SafeHtml实例放在一起插入:

代码语言:javascript
复制
@Template("{0}<p>not allowed<p>")
SafeHtml iconONLY(SafeHtml icon);

//...
AbstractImagePrototype proto = AbstractImagePrototype.create(icon);
SafeHtml iconHtml = SafeHtmlUtils.fromTrustedString(proto.getHTML());
template.iconONLY(iconHtml);

SafeHtml的基本思想是构建html字符串而不是dom元素-这允许重用这些字符串,或者一次性注入所有这些字符串(这通常比将元素附加到dom更快)-这不是小部件相互添加的方式,正如您已经注意到的,尝试这样操作小部件只会以丢失的片段告终。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10329833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档