我在gwt中适合UiBinder。我正在使用折叠uibinder(bootstrap库)。我有以下代码:
<b:Collapse b:id="toggle1" existTrigger="true" ui:field="toggle1">
<b:FluidRow>
<b:Column size="12">
<b:Alert close="false" animation="true" heading="Cabecera">
Text
</b:Alert>
</b:Column>
</b:FluidRow>
</b:Collapse>
我的问题是我在创建它时需要更改b:id =“toggle1”。我需要使用变量。有人可以解释我怎么做吗?我在互联网上看,但我没有找到一个好的解释
非常感谢你的建议。
答案 0 :(得分:1)
在致电createAndBindUi()
后在JAVA中设置ID。
collapseWidget.getElement().setId("toggle2");
要遵循的步骤:
在gwt.xml中添加以下条目
<inherits name="com.google.gwt.user.Debug"/>
使用debugId
和ui:field
,如下所示ui.xml
<gwt:CheckBox ui:field="myCheckBox" debugId="myCheckBox" />
现在您可以获得ID
myCheckBox.getElement().getId();
使用默认前缀gwt-debug-
生成所有ID,如下所示。如果您愿意,可以将其删除。
gwt-debug-myCheckBox
使用任何一个getElement().setId()
或ensureDebugId()
。它们之间的区别在于前缀为gwt-debug-
。 ensureDebugId()
使用前缀。
示例代码:(动态设置cancelButton
的ID)
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.uibinder.client.UiTemplate;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Widget;
public class MyDialogbox extends DialogBox {
private static MyUiBinder myUIBinder = GWT.create(MyUiBinder.class);
@UiTemplate("MyDialogbox.ui.xml")
interface MyUiBinder extends UiBinder<Widget, MyDialogbox> {
}
public MyDialogbox() {
setWidget(myUIBinder.createAndBindUi(this));
System.out.println(cancelButton.getElement().getId());
cancelButton.getElement().setId("cancel");
}
@UiField
Button cancelButton;
@UiHandler("cancelButton")
void doOpenDialogBox(ClickEvent event) {
hide();
}
}
MyDialogbox.ui.xml
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<g:DialogBox autoHide="true" modal="false">
<g:caption>
<b>Caption text</b>
</g:caption>
<g:HTMLPanel>
Body text
<g:Button ui:field='cancelButton' debugId='cancelButton'>Cancel</g:Button>
<g:Button ui:field='okButton' debugId='okButton'>Okay</g:Button>
</g:HTMLPanel>
</g:DialogBox>
</ui:UiBinder>