Gwt UiBinder变量

Gwt UiBinder变量,gwt,uibinder,Gwt,Uibinder,我在gwt与UiBinder合作。我使用的是压缩uibinder(引导库)。我有以下代码: <b:Collapse b:id="toggle1" existTrigger="true" ui:field="toggle1"> <b:FluidRow> <b:Column size="12"> <b:Alert close="false" animation="true" heading="C

我在gwt与UiBinder合作。我使用的是压缩uibinder(引导库)。我有以下代码:

<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”时更改它。我需要使用变量。有人能解释一下怎么做吗?我在网上查过,但没有找到一个好的解释


非常感谢您的建议。

在调用
createAndBindUi()
后用JAVA设置ID

应采取的步骤:

  • 在gwt.xml中添加以下条目

    <inherits name="com.google.gwt.user.Debug"/> 
    
  • 现在你可以拿到身份证了

    myCheckBox.getElement().getId();
    
  • 所有ID都是使用默认前缀
    gwt debug-
    生成的,如下所示。如果需要,可以将其删除

    gwt-debug-myCheckBox   
    
  • 使用任何一个
    getElement().setId()
    ensuredbugid()
    。它们之间的区别在于前缀为
    gwtdebug-
    ensuredbugid()
    使用前缀


示例代码:(动态设置
cancelButton
的ID)

import com.google.gwt.core.client.gwt;
导入com.google.gwt.event.dom.client.ClickEvent;
导入com.google.gwt.uibinder.client.uibinder;
导入com.google.gwt.uibinder.client.UiField;
导入com.google.gwt.uibinder.client.UiHandler;
导入com.google.gwt.uibinder.client.UiTemplate;
导入com.google.gwt.user.client.ui.Button;
导入com.google.gwt.user.client.ui.DialogBox;
导入com.google.gwt.user.client.ui.Widget;
公共类MyDialogbox扩展了DialogBox{
私有静态MyUiBinder MyUiBinder=GWT.create(MyUiBinder.class);
@UiTemplate(“MyDialogbox.ui.xml”)
接口MyUiBinder扩展了UiBinder{
}
公共MyDialogbox(){
setWidget(myUIBinder.createAndBindUi(this));
System.out.println(cancelButton.getElement().getId());
cancelButton.getElement().setId(“取消”);
}
@尤菲尔德
按钮取消按钮;
@UiHandler(“取消按钮”)
作废doOpenDialogBox(单击事件){
隐藏();
}
}
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> 

标题文本
正文
取消
可以

您需要更改id(“toggle1”)还是整个属性?我只需要更改id。如果我想有一些不同的折叠,每个折叠都应该有不同的标识符。我想将id设置为参数,例如:id=“{variable}”,并形成java类来设置它。谢谢安德斯这么快的回答。这里是什么?如何在XML中设置ID?请阅读。我已经更新了我的帖子。请看一看。对不起,布拉杰这么晚才回答。我忘了说我在使用引导库。b是其组件的一部分。请阅读此处。谢谢!这是另一种方法。我试试看。
gwt-debug-myCheckBox   
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();
    }

}
<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>