Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gwt 使用UIbinder定义小部件的可选参数_Gwt_Uibinder - Fatal编程技术网

Gwt 使用UIbinder定义小部件的可选参数

Gwt 使用UIbinder定义小部件的可选参数,gwt,uibinder,Gwt,Uibinder,以下问题的答案表明这是可能的: 如果在模板中声明,则HTMLPanel将是最终结果中的元素,而不是默认的 HTMLPanel具有以下构造函数: public HTMLPanel(String tag, String html) 这个方法可能会调用它,但是如何调用呢?如果模板中没有标记属性,则使用的构造函数可能是: public HTMLPanel(String html) 我知道可以用@UiConstructor注释构造函数来创建一个具有模板中定义的参数的小部件,但是如何根据定义的属性更改

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

如果在模板中声明
,则HTMLPanel将是最终结果中的
元素,而不是默认的

HTMLPanel具有以下构造函数:

public HTMLPanel(String tag, String html)
这个方法可能会调用它,但是如何调用呢?如果模板中没有标记属性,则使用的构造函数可能是:

public HTMLPanel(String html)
我知道可以用
@UiConstructor
注释构造函数来创建一个具有模板中定义的参数的小部件,但是如何根据定义的属性更改构造函数呢


还有,
字符串html
是如何自动填充的?作为元素的内容,是否存在html属性的隐式定义?或者这是UIBinder仅针对HTMLPanel的非标准行为?

HTMLPanel
有一个专用的
HTMLPanelParser
,它处理来自
ui.xml
的元素

元素解析器是UiBinder的内部部分,您不能

您必须声明一个
@UiConstructor
构造函数,其余的由setter处理,最后的验证可能在
onAttach
(类似于当您忘记调用
initWidget
时,
Composite
在附加时间抛出的方式,类似于
Widget
setElement

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

我个人倾向于最后一种方法