2014-03-31 31 views
0

我在gwt中使用UiBinder。我正在使用崩潰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」,當我創建它。我需要使用變量。有人能解釋我該怎麼做嗎?我在互聯網上尋找,但我沒有找到一個好的解釋

非常感謝你的建議。

+0

你需要更改ID( 「toggle1」)或作爲一個整體的屬性? –

+0

我需要更改唯一的ID。如果我想要有一些不同的崩潰,每個人都應該有不同的名人。 我想將id設置爲一個參數,例如:id =「{variable}」並形成java類來設置它。 謝謝安德斯回答這麼快。 –

+0

這是什麼'b'?你如何在XML中設置ID?請閱讀[使用ui添加ID到字段:字段聲明](http://stackoverflow.com/questions/16070979/add-id-to-field-with-uifield-declaration)。 – Braj

回答

1

調用createAndBindUi()後,在JAVA中設置ID。

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

遵循的步驟:

  • 添加條目下方在你gwt.xml

    <inherits name="com.google.gwt.user.Debug"/> 
    
  • 隨着ui:field在你ui.xml

    <gwt:CheckBox ui:field="myCheckBox" debugId="myCheckBox" /> 
    
  • 如下所示使用 debugId
  • 現在你可以得到的Id

    myCheckBox.getElement().getId(); 
    
  • 所有的ID與默認前綴gwt-debug-產生如下圖所示。如果你想,那麼你可以刪除它。

    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> 
+0

在這裏閱讀有關[gwt uibinder ui:with - 調用方法與參數](http://stackoverflow.com/questions/8937269/gwt-uibinder-uiwith-calling-methods-with-arguments)。 – Braj

+0

謝謝!這是另一種方式。我會嘗試。 –