0

以下问题的答案表明这是可能的:

试图让 UIBinder 给我一个跨度而不是 div

如果您<g:HTMLPanel tag="span">在模板中声明,那么 HTMLPanel 将是<span>最终结果中的一个元素,而不是默认的<div>.

HTMLPanel 有这个构造函数:

public HTMLPanel(String tag, String html)

这可能是由这种方法调用的,但是如何调用呢?如果模板中没有标签属性,那么使用的构造函数大概就是这个:

public HTMLPanel(String html)

我知道可以注释一个构造函数@UiConstructor来创建一个在模板中定义的参数的小部件,但是如何根据定义的属性来更改构造函数?

还有,如何String html自动填充?作为元素的内容,会有一些隐含的 html 属性定义吗?或者这只是 HTMLPanel 的 UIBinder 的非标准行为?

4

1 回答 1

1

HTMLPanel有一个专门HTMLPanelParser处理来自ui.xml.

元素解析器是 UiBinder 的内部部分,您不能添加自己的.

您必须声明一个@UiConstructor构造函数,其余部分由 setter 处理,并可能在其中完成一些最终验证onAttach(类似于Composite您忘记调用时在附加时抛出的方式,对于andinitWidget也类似)。WidgetsetElement

在复杂的情况下,和/或如果你想强制使用构造函数参数,那么不要做任何特殊的事情,让小部件的用户使用 a@UiFactory@UiField(provided = true). 这已经是SuggestBox,ValueListBoxCellList例如的情况。

我个人偏爱最后一种方法。

于 2012-11-15T14:41:31.457 回答