GWT: Wie bekomme ich eine Referenz auf eine Schaltfläche aus dem RootPanel?
Ich bin mit GWT 2.4. In meinem onModuleLoad-Methode, da eine string-id, wie bekomme ich eine Referenz zu einer vorhandenen Schaltfläche auf der Seite von dem RootPanel Objekt? Ich versuche diese
public void onModuleLoad() {
...
final Button submitButton = (Button) RootPanel.get("submit");
aber immer den Kompilierungsfehler "Cannot cast von RootPanel auf die Taste".
Edit:
Dachte ich mit einem iterator würde den Schmerz heilen, aber keine Würfel. Hier ist die Standard-HTML geladen (Hinweis der button mit id="submit") ...
<div>
<form name="f">
File name: <input type="text" size="25" id="filename" name="filename"
value="" /> <input type="button" id="submit" name="submit"
value="Submit" /> <input type="hidden" name="curId" id="curId"
value="" />
</form>
</div>
<div id="content"></div>
aber dieser code in onModuleLoad wird eine NullPointerException (weil der submitButton festgelegt id nicht gefunden werden kann) ...
public void onModuleLoad() {
final Button submitButton = (Button) getWidgetById("submit");
submitButton.addStyleName("submitButton");
...
private Widget getWidgetById(final String id) {
Widget eltToFind = null;
final Iterator<Widget> iter = RootPanel.get().iterator();
while (iter.hasNext()) {
final Widget widget = iter.next();
final Element elt = widget.getElement();
if (elt.getId() != null && elt.getId().equals(id)) {
eltToFind = widget;
break;
} //if
} //while
return eltToFind;
}
Dank, - Dave
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Ihre input-element mit
Document.get().getElementById("submit").<InputElement>cast()
, aber Sie werden nicht in der Lage, eineButton
widget aus ihm heraus.Wenn Sie Ihren code zu Lesen
<button type="button" id="submit" name="submit" value="Submit">
statt<input>
(die type=button ist technisch nicht erforderlich, aber einige Browser behandeln diese wie type=submit, wenn Sie nicht), dann können SieButton.wrap()
:Einige der GWT-widgets haben statische Methode wrap (), die es erlaubt, zu konvertieren von DOM-Elementen für widget-Instanzen.
Schaltfläche submit = Button.wrap(DOM.getElementById("submit"));
Die get () - Methode gibt das RootPanel im Zusammenhang mit der browser-element, nicht das widget mit diesem Namen. Ein RootPanel ist eine Unterklasse von ComplexPanel, so dass ich denke, Ihre beste Wette ist, um die Methoden aus ComplexPanel zum Durchlaufen der widgets und so finden die, die Sie wollen, dass Art und Weise.
Wrap schafft eine Ebene und entfernen Sie alle Funktionalitäten, die zuvor geschrieben auf die Schaltfläche.
Ich verwendete den folgenden code, um zu lösen die gleichen.