gpt4 book ai didi

java - HTMLPanel 可以在 uiBinder 中使用,即使它没有无参数构造函数。怎么会?

转载 作者:行者123 更新时间:2023-11-30 07:22:26 25 4
gpt4 key购买 nike

http://www.gwtproject.org/doc/latest/DevGuideUiBinder.html

它指出要在 uiBinder 模板中使用小部件:

they must be default instantiable; that is, they must provide a zero-argument constructor. However, there are a few ways to get around that. In addition to the @UiFactory and @UiField(provided = true) mechanisms described under Shared resource instances, you can mark your own widgets with the @UiConstructor annotation.

HTMLPanel 不满足这些要求,但它可以在 UiBinder 模板中使用。怎么会这样?

最佳答案

GWT 中的一些内置小部件在 UiBinder 中具有自定义支持,以便它们可以完成自己的工作。对于这些情况,属性或元素经过特殊处理(考虑 <ui:with><ui:field> ,当然还有 <g:HTMLPanel> 等),以便使用 uibinder 有意义。

HTMLPanel 是一种特殊情况,它不能简单地通过实现 HasHtml 来存在。和HasWidgets ,因为这些子部件需要附加到 html 结构内的某个位置。因此,他们没有使用公共(public) API(正如您在文档中找到的那样),而是......做了一些欺骗。

最终结果是,如果不实际 fork uibinder 并直接编辑它,就无法在自己的代码中复制。这已经在其他项目中完成了,但是当以后对 UiBinder 进行更改时,破坏的风险很高,因此通常应该避免。

TL;DR:将 HTMLPanel 视为一种特殊情况,它可以稍微改变规则以使其更有用。在您自己的代码中,尝试坚持使用 UiFactory/UiConstructor/UiChild注释、属性 setter 以及实现子内容受支持的接口(interface)之一。

关于java - HTMLPanel 可以在 uiBinder 中使用,即使它没有无参数构造函数。怎么会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37324394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com