2009-06-19 9 views
6

Ich habe dies seit ein paar Tagen jetzt ohne Glück versucht.GWT FormPanel kann nicht ordnungsgemäß funktionieren

Im gehosteten Modus passiert nichts, nachdem die Warnung "Senden an" ausgelöst wurde. In Chrome wird das Formular in einer separaten Registerkarte geladen, aber der POST selbst ist leer. In Firefox und IE passiert wiederum nichts nach der Warnung. Irgendwelche Ideen?

Ich habe ein Servlet in/designer eingerichtet, das den Anforderungsheader und -text von jeder Seitenanforderung ausgibt. Ich kann dieses Servlet von einer einfachen HTML-Seite treffen und die erwartete Ausgabe sehen. Von GWT wird nie eine Anfrage angezeigt (außer für Chrome, in der die Anfrage angezeigt wird, aber mit einem leeren Körper).

Antwort

1

Ihr Code ist fast identisch mit dem Beispiel auf der FormPanel API, daher muss ich davon ausgehen, dass die Logik korrekt ist.

Existiert ein Servlet bei "/ designer"? Die Dokumentation für SubmitCompleteHandler besagt, dass das onSubmitComplete-Ereignis nur ausgelöst wird, wenn das Senden erfolgreich ist.

Hier ist ein Thread einige Beispiel-Code enthält ein Servlet für das Schreiben, das die Form Post Griffe: http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/77e68fcb9097debc

2

Versuchen form.setWidget(panel); nach unten bewegt.

Stellen Sie außerdem sicher, dass Sie das Formular dem Containerfeld hinzufügen, d. H. add(form);, nicht das vertikale Feld.

0

Ich weiß, dass dieser Beitrag ist 3 Jahre alt, aber im Interesse aller googler wie mich, der hier landet, dies sind die Bedingungen für die OnSubmitCompleteEvent abgefeuert werden:

  1. Verwenden Sie das nicht -arg-Konstruktor zum Erstellen des Formulars: FormPanel f = neu FormPanel();. Wie in der Javadoc erwähnt:

    Erstellt ein neues FormPanel. Bei der Verwendung von diesem Konstruktor erstellt, wird es zu einem versteckten < > Elemente iframe vorgelegt werden, und die Ergebnisse von die über {@link SubmitCompleteHandler} gemacht Vorlage zur Verfügung.

    So ist es der einzige, der löst die Formularübergabe abgeschlossen Ereignis wenn erfolgreich.

  2. Stellen Sie sicher, dass die Aktion wieder mit Content-Type eine Antwort genannt wird: "text/html"

Eine Lösung, wenn Sie noch brauchen, um Ihre externe NamedFrame, ist für die LoadEvent auf dem Rahmen zu sehen. Es wird ausgelöst, wenn der Frame geladen wird, dh die Antwort vom Server ist angekommen: ...

NamedFrame frame = new NamedFrame("test"); 
frame.addLoadHandler(new LoadHandler() 
{ 
    void onLoad(LoadEvent event) 
    { 
     //your code here 
    } 
}); 

Hoffe es hilft!

Verwandte Themen