Spring MVC 2.5 - das hinzufügen von Parametern zu einer Umleitung, die erscheinen nicht in der url?

Halten Sie es einfach, die grundlegenden Funktionen meiner Anwendung eine Suchfunktion, mit der ein Formular für die Suche Ergebnisse. Die app holt sich diese Ergebnisse über SOAP von einem anderen app.

Auf der Suche controller ich brauche die Fähigkeit zu geben, einige Parameter in der Umleitung, die nicht zeigen, bis in der url der Seite Ergebnisse, und andere, werden. Hier ein Beispiel von dem, was die Umleitung sieht wie folgt aus:

return new ModelAndView(new RedirectView(/results?q=blah, true));

Wie Sie sehen können, ich muss die f-Parameter enthalten sein. Aber ich brauche auch andere Parameter, die ich nicht wollen, zu zeigen, bis auf der Ergebnis-Seite url.

Meine app braucht, die Fähigkeit zu haben, mehrere Suchanfragen innerhalb einer browser-Sitzung. Zum Beispiel, wenn mehrere tabs alle suchen gleichzeitig. Also das session-Objekt wird abstrahiert, um eine Karte von session state objects. Diese halten Stand-Daten für jede Suche. Eine neue session-state wird jedes mal erstellt, wenn ein Antrag gestellt wird auf der Suche controller. Diese Sitzung Stand dann holte von den Ergebnissen controller.

Unserer bookmarking-Prozess muss komplett Zustand, der frei ist. So eine person sollte in der Lage sein, um Lesezeichen für die Seite Ergebnisse url, oder kopieren und fügen Sie den url in einem neuen tab oder einem anderen browser. Wenn die Ergebnisse, die url wird ausgeführt, die Ergebnisse controller führt eine neue Suche.

Mein problem ist Folgendes:
Ich brauche einen Weg für die Ergebnisse-controller, um zu wissen, ob die Anfrage kommt von einer Umleitung in der search-controller oder ein (Lesezeichen/copy & paste). So kann es greifen die bestehende session-state-Daten, oder führen Sie eine neue Suche. Wenn ich über einen versteckten parameter in der Umleitung von der Suche controller wie "requester", dann ich kann in einfachen Logik in den Ergebnissen controller zu suchen für eine bestehende session state oder feuern Sie eine neue Suche.

Dank

EDIT: Was zum übergeben von Daten von einem controller auf den anderen, ohne es in der url. Wie den Zugriff auf Modell-Daten aus der search-controller Umleitung in der Ergebnisse-controller statt der Ergebnisse anzeigen? Hier ist ein Konstruktor mit der option zum ausblenden der Modell-Parametern.

/**
 * Create a new RedirectView with the given URL.
 * @param url the URL to redirect to
 * @param contextRelative whether to interpret the given URL as
 * relative to the current ServletContext
 * @param http10Compatible whether to stay compatible with HTTP 1.0 clients
 * @param exposeModelAttributes whether or not model attributes should be
 * exposed as query parameters
 */
public RedirectView(String url, boolean contextRelative, boolean http10Compatible, boolean exposeModelAttributes)

Gibt es eine andere Möglichkeit für die übergabe von Daten von einem controller auf den anderen?

Können Sie überprüfen, HTTP - Referer header? Dann können Sie sehen, wenn die Seite angefordert wurde, von einer bestimmten Seite Ihrer Website. Ein redirect bedeutet, dass eine HTTP GET-also alle Parameter müssen in der URL.
Dies funktioniert, wenn jemand ein Formular abschickt, post von der Seite suchen. Aber wenn jemand ein Formular abschickt, post von einem anderen Standort aus, auch wenn Sie auf der Suche nach controller, den referer-header ist nutzlos.

InformationsquelleAutor headz68 | 2011-08-16

Schreibe einen Kommentar