在GWT中设置元素ID

时间:2013-01-10 10:08:58

标签: java gwt qtp

我正在尝试将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>

1 个答案:

答案 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") !!!!