UiBinder变量

时间:2014-03-31 13:36:38

标签: gwt uibinder

我在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”。我需要使用变量。有人可以解释我怎么做吗?我在互联网上看,但我没有找到一个好的解释

非常感谢你的建议。

1 个答案:

答案 0 :(得分:1)

在致电createAndBindUi()后在JAVA中设置ID。

collapseWidget.getElement().setId("toggle2");

要遵循的步骤:

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

    <inherits name="com.google.gwt.user.Debug"/> 
    
  • 使用debugIdui: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>