我正在使用gwt 2.3。我正在使用UI绑定器。我想通过使用UIBinder来创建网格。为此,我写了这段代码。
<g:Grid ui:field='mygrid' addStyleNames='{style.panel}'
cellSpacing='10'>
<g:row>
<g:customCell>
<g:Label text="11" styleName="{style.label}" />
</g:customCell>
<g:customCell>
<g:Label text="22" styleName="{style.label}" />
</g:customCell>
</g:row>
<g:row>
<g:customCell>
<g:Label text="33" styleName="{style.label}" />
</g:customCell>
<g:customCell>
<g:Label text="44" styleName="{style.label}" />
</g:customCell>
</g:row>
</g:Grid>
现在我的网格数据是静态的。如果我的数据来自服务器端&amp;取决于我想要使用UIbinder创建网格的数据。怎么可能这个?
另一种情况。有形式。来自控件的数量来自数据库。 那么UIBider如何支持创建这种形式。每次控制的数量可能会有所不同
所以我想知道是否可以使用UIBinder来创建用户界面,具体取决于运行时数据。
任何建议或示例表示赞赏。
答案 0 :(得分:1)
UiBinder是“交叉编译”到JavaScript和HTML代码。一旦完成,你就无法修改它。现在有办法做一些事情,比如将XML语法发送到客户端,然后创建一个网格。
但是,您可能会在“代码隐藏”中添加新行。
对于你的第二个问题:我不明白你的意思:P
答案 1 :(得分:1)
是的,您可以从Java向UIBinder添加数据。在Eclipse中创建UIBinder时,它还为此XML创建了.java文件。编辑此相应的java文件并添加如下内容:
public class MyGridSample extends Composite {
// uiBinder interface declaration...
private static MyGridSampleUiBinderUiBinder uiBinder = GWT.create(MyGridSampleUiBinder.class);
interface MyGridSampleUiBinder extends UiBinder<Widget, MyGridSample > {
}
// annotation to get ui-field into code
@UiField
Grid mygrid;
public MyGridSample () {
setWidget(uiBinder.createAndBindUi(this));
// sets cell 0,0 with label
mygrid.setWidget(0, 0, new Label("cell 0"));
}
}
GWT是客户端框架,UIBinder预编译为javascript文件 - 它们作为静态文件提供。您应该进行Webservice调用以将数据导入此模板。