Dom 在gwt中按id获取小部件

Dom 在gwt中按id获取小部件,dom,gwt,Dom,Gwt,我有一堆动态生成的文本框。在创建步骤中,我将为它们分配ID属性。 e、 g 我需要稍后通过他们的ID访问他们,但我不能这样做。 我试图使用DOM对象来获取小部件,但它产生了一个异常: String id = "some id"; Element el = DOM.getElementById(id); String value = el.getAttribute("value"); - this line produces an exception. 我也尝试过使用el.getInnerTex

我有一堆动态生成的文本框。在创建步骤中,我将为它们分配ID属性。 e、 g

我需要稍后通过他们的ID访问他们,但我不能这样做。 我试图使用DOM对象来获取小部件,但它产生了一个异常:

String id = "some id";
Element el = DOM.getElementById(id);
String value = el.getAttribute("value"); - this line produces an exception.

我也尝试过使用el.getInnerText、el.getNodeValue——运气不好。我在chrome调试器中看到-文本框没有“value”属性。

既然您是用gwt java代码构建文本框,为什么不将它们放到映射中,稍后再访问它们?

需要记住的一点是HTML/DOM中的属性和属性之间的区别。在您的示例中,“值”是一个属性。您可以尝试元素#getPropertyString。过去,属性和属性可以互换使用,但在现代浏览器中已不再如此。

您可以通过以下方式获得与元素关联的小部件:

public static IsWidget getWidget(com.google.gwt.dom.client.Element element) {
    EventListener listener = DOM
            .getEventListener((com.google.gwt.dom.client.Element) element);
    // No listener attached to the element, so no widget exist for this
    // element
    if (listener == null) {
        return null;
    }
    if (listener instanceof Widget) {
        // GWT uses the widget as event listener
        return (Widget) listener;
    }
    return null;
}

或者,将
元素
强制转换为
输入元素
。它有一个getValue()方法。谢谢。但是我尝试了这两种方法,但都不起作用:Element el=DOM.getElementById(_s);输入元素ie=(输入元素)el;字符串测试=ie.getValue();-生成和异常。我正在考虑它,但担心内存问题。我试过这个方法,似乎效果很好。
public static IsWidget getWidget(com.google.gwt.dom.client.Element element) {
    EventListener listener = DOM
            .getEventListener((com.google.gwt.dom.client.Element) element);
    // No listener attached to the element, so no widget exist for this
    // element
    if (listener == null) {
        return null;
    }
    if (listener instanceof Widget) {
        // GWT uses the widget as event listener
        return (Widget) listener;
    }
    return null;
}