我正在尝试将ID添加到GWT元素。我试过以下代码。
在SubscribeView.java文件中,定义了existingFundRadioButton字段,我为它设置了ID,如下所示:
DOM.setElementAttribute( existingFundRadioButton.getElement(),
"ID",
"existingFundRadioButton" )
我尝试使用existingFundRadioButton.getElement().setId("existingFundRadioButton")
,但它不起作用。
这是我的代码。
<g:FlowPanel width="100%">
<g:FlowPanel>
<g:HTMLPanel ui:field='searchPanel' styleName="{res.fdcWidgets.box}">
<table class="{res.fdcWidgets.inputTable}">
<colgroup>
<col width="25%" />
<col width="75%" />
</colgroup>
<tbody>
<tr>
<td>
<fdc:I18NRadioButton name="fund"
ui:field="existingFundRadioButton" checked="true"
messageKey="buy.existingFundLabel" />
</td>
<td>
<hli:HoldingsListBoxWidget ui:field="holdingsListBox" />
</td>
</tr>
</tbody>
</table>
</g:HTMLPanel>
</g:FlowPanel>
<g:FlowPanel styleName="{res.fdcWidgets.contentRightColumn}">
<fund:FundInformationWidget ui:field="fundInformationWidget" />
</g:FlowPanel>
</g:FlowPanel>
答案 0 :(得分:2)
如果您遇到旧版本的GWT - 对于RadioButton,我们使用特定于浏览器的方法。我们通过扩展RadioButton。
MyRadioButton extends RadioButton{
public void setId( String id )
{
getElement().setId( id );
Element child = DOM.getChild( getElement(), 0 );
DOM.setElementAttribute( child, "id", id + CONST_INPUT_ELEMENT );
final Element e_label = DOM.getChild( getElement(), 1 );
// Handling IE
DOM.setElementAttribute( e_label, "htmlFor", id + CONST_LABEL_ELEMENT );
// Handling Other Browsers
DOM.setElementAttribute( e_label, "for", id + CONST_LABEL_ELEMENT );
}
}
对于那些幸运地拥有支持所有小部件中的ensureDebugId的最新GWT的人,您可以使用从UIObject继承的所有ui元素中提供的ensureDebugId("someid")
!!!!