Frage

Ich habe eine größere Anwendung, die ich arbeite mit, aber die GWT Geschichte Dokumentation hat ein einfaches Beispiel, das das Problem veranschaulicht. Das Beispiel wird der Einfachheit halber kopiert:

public class HistoryTest implements EntryPoint, ValueChangeHandler
{
    private Label lbl = new Label();

    public void onModuleLoad()
    {
        Hyperlink link0 = new Hyperlink("link to foo", "foo");
        Hyperlink link1 = new Hyperlink("link to bar", "bar");
        Hyperlink link2 = new Hyperlink("link to baz", "baz");

        String initToken = History.getToken();

        if (initToken.length() == 0)
        {
            History.newItem("baz");
        }

        // Add widgets to the root panel.
        VerticalPanel panel = new VerticalPanel();
        panel.add(lbl);
        panel.add(link0);
        panel.add(link1);
        panel.add(link2);
        RootPanel.get().add(panel);

        History.addValueChangeHandler(this);        // Add history listener
        History.fireCurrentHistoryState();
    }

    @Override
    public void onValueChange(ValueChangeEvent event)
    {
        lbl.setText("The current history token is: " + event.getValue());
    }
}

Das Problem ist, dass, wenn Sie die Anwendung aktualisieren, wird die Geschichte Stapel weggeblasen. Wie beurteilen Sie die Geschichte bewahren, so dass, wenn der Benutzer die Seite aktualisiert wird, ist die Zurück-Taste noch nützlich?

War es hilfreich?

Lösung

Ich habe es getestet mit Firefox und Chrome für meine Anwendung und Aktualisierung der Seite tut nicht die Geschichte löschen. Welchen Browser verwenden Sie? Haben Sie die

<iframe src="javascript:''" id='__gwt_historyFrame' style='position:absolute;width:0;height:0;border:0'></iframe>

in Ihrem HTML?

Andere Tipps

GWT hat für dieses Problem gesorgt, indem das History-Objekt bereitstellt. Durch einen Anruf an, es ist statische Methode History.newItem("your token"), werden Sie in der Lage sein, einen Token in der Query-String zu übergeben.

Doch Sie müssen sich bewusst sein, dass jedes Mal gibt es eine Geschichte Änderung in einer GWT-Anwendung wird das onValueChange(ValueChangeEvent event){} Ereignis ausgelöst, und in der Methode können Sie die entsprechenden Seiten aufrufen. Im Folgenden finden Sie eine Liste von Schritten, die ich dieses Problem zu lösen verwenden.

  1. einen Klick Zuhörer auf das Objekt hinzufügen, die eine neue Seite nennen muss. Im Umgang mit dem Ereignis ein Token an den history.(History.newItem("new_token") hinzuzufügen.

  2. die ValueChangeHandler in der Klasse implementieren, die Ihr Entrypoint implementiert.

  3. In onValueChangeHandler(this) Zuhörer auf die Klasse, die die Entrypoint implementiert. Stellen Sie sicher, dass die Zeile in dem onModuleLoad() Verfahren (es ist wichtig, es in diesem Verfahren zugegeben wird) der Klasse, die die Entrypoint implementiert (ziemlich offensichtlich, ha!)

  4. implementieren Schließlich onValueChange(ValueChangeEvent event) {// Aufruf eine neue Seite} Methode.

Das ist es

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top