JSF - Session Bean bei geänderter URL zerstören

y0dA

Erfahrenes Mitglied
Hi!
Folgendes Szenario:
Ich habe eine kl. Webapplikation welche mittels GET angesprochen wird, sprich die URL kann wie folgt lauten:
Code:
www.myapplication/jsp/overview.jsf?hash=12345&dbk=8989&Vertrag=j3j2121ö
Nun da der Controller hinter dieser JSP (overview.jsf) ziemlich viel zu laden hat habe ich mich hierbei für
Code:
scope=session
entschieden.

Nun habe ich aber das Problem dass wenn ich die GET Parameter ändere trotzdem keine Änderung stattfindet, da ja der entsprechende Controller im Session Scope gehalten wird und nichts davon mitbekommt (Daten werden bei mir im Constructor des entsprechenden Controllers geladen).

Weiß jemand eine elegante Lösung für mein Problem? Ich möchte einfach bei einer Änderung der Parameter dass der Controller destroyed und neu konstruiert wird. Oder sollte ich mit einem hiddenField in der JSP arbeiten, in welchem die Daten geladen werden?

mfg
 
Ich kenne mich mit JSF nicht so recht aus, hätte aber eine Idee für Dich mit dem ServletRequestListener:

Code:
public void requestInitialized(ServletRequestEvent e) {
  HttpServletRequest request = (HttpServletRequest)e.getServletRequest();
  HttpSession session = request.getSession();
  String geAenderterParameter = (String)session.getAttribute("geAenderterParameter");
  if (geAenderterParameter != null) {
    if (!geAenderterParameter.equals(request.getParameter("geAenderterParameter")) {
      session.removeAttribute("controller");
    }
  }
  session.setAttribute("geAenderterParameter", request.getParameter("geAenderterParameter"));
  if (session.getAttribute("controller") == null) {
    Controller c = new Controller(...); // oder wie er sonst erzeugt wird
    session.setAttribute("controller", c);
  }
}

Hoffe ich habe Dein Problem richtig verstanden.
 
Hi!
Danke für deinen Post, welcher auch eine Lösung beinhaltet - habe jenes Problem aber schon mit einem Filter gelöst.

danke.
 
Zurück