首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GXT UiBinder FieldLabel

GXT UiBinder FieldLabel
EN

Stack Overflow用户
提问于 2013-04-16 22:28:26
回答 1查看 944关注 0票数 1

我是UiBinder的新手,我尝试使用FieldLabel。

我找到了这篇文章:GXT: UiBinder new instance of a Widget

开发人员在何处使用这些标记

代码语言:javascript
复制
<form:FieldLabel text="Text">
  <form:Widget>
    <form:TextField ui:field="text"/>
  </form:Widget>
</form:FieldLabel>

当我执行完全相同的操作时,我得到以下错误:

代码语言:javascript
复制
ERROR: Illegal child <form:Widget> in a text-only context. Perhaps you are trying to use unescaped HTML where text is required, as in a HasText widget?: <form:FieldLabel text='Text'> (:7)

我的GXT版本(3.0.1)似乎不允许FieldLabel标记有一个非纯文本子标记。

到目前为止,我找到的包含FieldLabel的唯一解决方案是使用

代码语言:javascript
复制
@UiField(provided = true)

有没有更好的方式在UiBinder中使用FieldLabel?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-17 00:23:35

问题是您不应该将form:widget大写

代码语言:javascript
复制
<form:FieldLabel text="Text">
  <form:widget>
    <form:TextField ui:field="text"/>
  </form:widget>
</form:FieldLabel>

在UiBinder中,带有大写字母的元素代表一个真正的Widget子类,而小写的元素要么是一个常规的html dom元素,要么是父widget标签的一些修饰符。我们可以看到,由于与父部件标记(即<form:FieldLabel>)相同的form:名称空间,这不是一个dom元素。

工作原理:Java类有一个FieldLabel方法来提供要显示的小部件-- setWidget。此方法使用@UiChild注释(在其超类中)进行修饰:

代码语言:javascript
复制
@Override
@UiChild(limit = 1, tagname = "widget")
public void setWidget(Widget w) {
  //...

这使您( UiBinder用户)能够将标记引用为widget,并使用您输入的任何内容调用该方法。

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

https://stackoverflow.com/questions/16039753

复制
相关文章

相似问题

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