如何强制GWT为每个DOM元素添加唯一ID?

时间:2013-02-10 18:57:47

标签: gwt

我有一个GWT应用程序, 我想自动为每个元素添加ID 如果不可能,那么手动完成它的最快方法是什么?

4 个答案:

答案 0 :(得分:3)

我对性能问题不太确定。如何以10-20个小部件的形式添加露水ids会导致性能下降?

要在小部件上自动设置调试ID,您需要在module.gwt.xml文件中包含以下内容。

<!-- Enable debug ID. -->
<inherits name="com.google.gwt.user.Debug"/>
<set-property name="gwt.enableDebugId" value="true"/>

答案 1 :(得分:1)

是的可能:

第一种方式:

Button b = new Button();
DOM.setElementAttribute(b.getElement(), "id", "my-button-id")

第二种方式:

FlowPanel panel = new FlowPanel();
panel.getElement().setId("my-flowpanel-id");

如果你想分配所有附加到DOM的id,你可以做

Iterator<Widget> iterator = RootPanel.get().iterator();

while(iterator.hasNext()) {
    Widget w = iterator.next();
     w.getElement().setId("id");
}

答案 2 :(得分:1)

您可以创建自己的Widget类来扩展GWT Widget并为每个Widget设置一个id:

public class myWidget extends Widget {

    public myWidget(String id) {
        super();
        getElement().setId("id");
    }

    public void setId(String id) {
        // Use this method if you use Ui:Binder
        getElement().setId("id");
    }
}

如果你不需要在所有小部件上使用id,例如FlowPanel,Button等,你可以扩展其他类而不是Widget。

答案 3 :(得分:1)

如果您希望元素始终具有Id,则可以使用UI对象类的ensureDebugId。它确保您的元素在将其附加到dom之前设置了Id。