wie eine JSF-Aktion oder eine direkte URL-Link aufgerufen, um die Seite zu unterscheiden

StackOverflow https://stackoverflow.com/questions/3875743

  •  28-09-2019
  •  | 
  •  

Frage

ich eine Situation haben, ich habe einen Session-Bean mit der Liste, die Liste I in HTML-Datentabelle zeigen. Wenn der Benutzer die URL von Browser oder normalen href trifft, muss ich alle Datensätze zeigen. Es ist vorgesehen, auch für die Daten zu suchen, wo ich die gefilterten Liste zu zeigen. Jetzt, nachdem ein Benutzer die Suche gemacht hat, enthält die Liste gefilterten Datensätze und danach tut er verlässt die Seite zu einem anderen, und jetzt, wenn der Benutzer trifft die URL oder verwendet das Menü auf dieser Seite zurück zu kommen, da ich diese Liste haben in-Session-Bean, habe ich noch die gefilterte Liste.

Da es keine Standardaktion in JSF 1.1 oder 2.0 preRenderView Konzept ist, sein schwer, die Liste zu löschen und nicht gefilterten Daten (alle Ergebnisse) erhält wieder. Auch Trick in getList () -Methode nicht die Aufgabe erfüllen.

Ich habe Nutzungsphase Zuhörer geplant, wie wenn ein Benutzer eine Seite über href oder URL-Hit in Browser erreicht, invoke Anwendungsphase nicht geschieht. Ich kann boolean Variable in meinem Session-Bean wechseln und in getList () ich einigen Trick ausführen kann, es zu überprüfen war url, href Hit oder durch den Befehlsschaltflächen.

Hope Ich habe mich klar gemacht. Kurz gesagt habe ich in meiner Bohne zu erkennen, ob die Anfrage aus href kam, Browser oder eine Aktion. Wenn Suchaktion Filtersätze für Datentabelle, wenn nicht Liste Cache halten und es zeigt, solange Suche nicht gemacht wird.

Just leitet mich, ob ich die Dinge in der richtigen Art und Weise tue oder zu viel denken, oder kann es in sehr viel effizienter Art und Weise durchgeführt werden.

Vielen Dank im Voraus. Nun Plattform ist JSF 1.1 in WebLogic Portal 10.3 .....

War es hilfreich?

Lösung

JSF 1.x Aktionen verwenden standardmäßig POST Methode. Direkte Links / Lesezeichen / etc sind von Natur aus GET Methode. Da gibt es kein ResponseStateManager#isPostback() oder FacesContext#isPostback() in JSF 1.1, müssen Sie sich die Anfragemethode bestimmen:

HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
boolean postback = "POST".equalsIgnoreCase(request.getMethod());

oder Scheck für einen bestimmten Parameter in der Anfrage Parameterkarte, aber ich kann nicht von oben auf dem Kopf sagen, aus welcher Sie überprüfen möchten. Sie haben es selbst zu bestimmen.

boolean postback = facesContext.getExternalContext().getRequestParameterMap().containsKey(SOME_KEY);

Wenn postback true ist, dann ist eine JSF Aktion aufgerufen wurde.

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