2011-01-04 4 views
0

HALLO,Erstellen von neuem Kontext in JSF

Wir navigieren, zum Beispiel von Seite A zu C. Wenn wir in Seite C sind, klickt Benutzer die Zurück-Schaltfläche des Browsers und geht zurück auf die vorherige Anwendung, die ist verwendet, um die Seite A aufzurufen. Erneut, wenn Benutzer versucht, die Seite A aufzurufen, er direkt zur Seite C, nicht Seite A.

Hier was ich fühlte das Problem war, kann der JSF-Kontext auf die aktuelle Seite. Wie können wir dieses Problem lösen? Wenn jeder Benutzer auf die Seite A klickt, sollte er in der Lage sein, die Seite A zu sehen.

Jeder hat die Lösung für mein Problem.

Antwort

1

Überprüfen Sie einfach das Nav.

Regeln

Beispiele

JSF 2

<h:commandButton action="/PageA.xhtml" or action="/PageA.xhtml?faces-redirect=true" ... /> 

JSF 1 Sie benötigen faces-config.xml

faces-config.xml zu konfigurieren:

<navigation-rule> 
    <from-view-id>Page.xhtml</from-view-id> 

    <navigation-case> 
     <from-outcome>goToA</from-outcome> 
     <to-view-id>/PageA.xhtml</to-view-id> 
    </navigation-case> 

    <navigation-case> 
     <from-outcome>goToC</from-outcome> 
     <to-view-id>/PageC.xhtml</to-view-id> 
    </navigation-case> 
</navigation-rule> 

<from-view-id> = die Seite, die das Nav "feuert". Regel. * Verwenden Sie es global (<from-view-id>*</from-view-id>)

<from-outcome> = Navigations String

<to-view-id> = Zielseite

Page.xhtml zu machen:

<h:commandButton action="goToA" or action="goToC" ... /> <!-- Navigation string --> 

Aktion der nav String sein sollte (von-Ergebnis) oder eine Methode, die ein gültiges Nav zurückgibt. string, Beispiel:

Bean

//Returns the nav. string 
public String navA() { return "goToA"; } 
public String navC() { return "goToC"; } 

Seite

<h:commandButton action="#{bean.navA}" or action="#{bean.navC}" ... /> 
+0

Es beantwortet nicht meine Fragen. – Krishna

+0

Wenn es nicht auf die richtige Seite umleiten, ist es vielleicht ein Navigationsproblem, ich denke ... Tut mir leid, wenn ich über Ihr Problem falsch bin =/ – Renan

+0

Das ist in Ordnung. Ich werde es versuchen. – Krishna

1

nicht HTTP POST-Anfragen für die Navigation verwenden, aber verwenden HTTP GET-Anfragen.

In JSF Hinsicht nicht <h:commandLink> für die Navigation verwenden, aber <h:outputLink>, <h:link> oder auch Plain-Vanilla-<a> verwenden.

+0

Warum sollten wir nicht h: commandLink verwenden? In unserer Anwendung verwenden wir h: commandLink an allen Stellen für die Navigation. – Krishna

+2

Weil es eine HTTP-POST-Anforderung statt einer HTTP-GET-Anforderung auslöst. Normalerweise möchten Sie nur HTTP-POST für nicht-idempotente Anfragen wie Formular-Submits verwenden, die die Daten ändern. Webbrowser behandelt POST-Anfragen auch beim Navigieren in der Historie unterschiedlich. Searchbots indiziert keine POST-Anfragen. Lerne HTTP. – BalusC

Verwandte Themen