JSF: Verlinkung mittels Button, bedingte Weiterleitung

Tandibur

Mitglied
Hi!

Ich programmiere an einer kleinen Webseite mit NetBeans 6.5 und dem JSF-Framework Woodstock.

Ich habe mich durch die Tutorials gearbeitet und komme gut zurecht.

Meine erste Frage:
Wenn ich zum Verlinken zu einer anderen Seite einen Button benutze (action-Methode-Rückgabewert ist Seitentitel und in faces-config ist der Connector vom Button zur Zielseite erstellt), dann erscheint in der Browseradressleiste nicht die neue, sondern noch die Ursprungsseite. Erst wenn ich nochmal auf den Button klicke (er befindet sich im Navigationsmenü), wird die Adresse korrekt angezeigt. Mache ich die Navigation mit Hyperlinks, funktioniert alles so, wie ich es erwarte.

Und die zweite Frage:
Ich habe eine Loginseite (nur zur erweiterten Funktionalität, der Großteil ist so erreichbar). In der SessionBean setze ich den Benutzernamen und werde bei korrekten Eingaben auf die Adminseite weitergeleitet. Ist der Name falsch, wird die Loginseite wieder angezeigt.
Nun ist es jedoch möglich, in der Adressleiste einfach ".../Administration.jsp" einzugeben, und dann ist man auch am Ziel ^^.
Um dies zu umgehen, habe ich in der prerender-Methode der Seite folgenden Code eingegeben:
Java:
if(!getSessionBean1().isAdmin){
Application application = getApplication();
NavigationHandler navigator = application.getNavigationHandler();
FacesContext facesContext = getFacesContext();
navigator.handleNavigation(facesContext, null, "Login");
}

Diese Zeilen habe ich aus dem Tutorial entnommen:
Navigating Pages in a Web Application - NetBeans IDE 6.5 Tutorial
Das Programm durchläuft zwar den Code, navigiert aber nicht zur gewünschten Seite.

Was mache ich denn noch verkehrt? (Und bitte nicht die erste Frage vergessen :))

Vielen Dank fürs Lesen, Lars
 

Tandibur

Mitglied
Hi, ich nochmal.

Zur 2. Frage: wie kann ich denn generell einer jsp sagen: prüfe auf die Variable x, und wenn x==y, dann zeige dich selbst an, ansonsten leite weiter an Seite "falschevariable.jsp" oder an die vorherige Seite zurück?

Lars
 

Tandibur

Mitglied
So langsam taste ich mich ran.

Ich habe jetzt ein Servlet geschrieben, welches immer dann gerufen wird, wenn "Administration.jsp" aufgerufen wird:
Java:
@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        boolean checkLogin = Administration.checkLogin(request.getParameter("benutzer"), request.getParameter("passwort"));
        if(checkLogin){
            RequestDispatcher dispatcher = request.getRequestDispatcher("Administration.jsp");
            dispatcher.forward(request, response);
        }
        else{
            RequestDispatcher dispatcher = request.getRequestDispatcher("Login.jsp");
            dispatcher.forward(request, response);
        }
    }

Administration.java enthält eine Methode checkLogin(), welche die übergebenen Parameter prüft:
Java:
public static boolean checkLogin(String benutzername, String passwort){
        getSessionBean1().setAsAdmin(benutzername, passwort);
        return getSessionBean1().admin;
    }

das static habe ich nun erst eingetragen, weil im Servlet der Fehler kommt: non-static method ... cannot be referenced from static context ...
Nun ist der Fehler in der Administration.java :noe:

So wie ich das verstehe, ist das Servlet static, aber getSessionBean1() non-static.

Wie umgehe ich das jetzt?

Lars
 

Tandibur

Mitglied
ich lerne ...
... unglaublich ;)

static vs non-static - alles klar, war ja ne typische Anfängerfrage.

Aber jetzt komm ich schon ne Weile nicht mehr weiter:
Im Ordner WebPages liegen meine jsp´s, im Ordner SourcePackages/tools das Servlet.
mit request.getParameter("id") bekomme ich normalerweise den Wert des mit ID bezeichneten Textfeldes. Nur klappt meine Adressierung nicht:
"Login:page1:html1:body1:form1:textfeld_user" ist kompett unbekannt im Kontext, sagt das Debugging.

Wie muss ich das adressieren?

Wär schön, wenn ich hier nicht nur Selbstgespräche führe ;(

Lars
 

Tandibur

Mitglied
Ich nochmal ^^.

Habe mein Problem nun folgendermaßen gelöst:
NetBeans 6.5 inkl Woodstock deinstalliert, Projekt in eclipse mit struts2 neu erstellt.

Mal sehen, was dort so für Fallstricke lauern.

Aus meiner bisherigen Erfahrung heraus rate ich jedem von der Nutzung Woodstocks ab, da es zu intransparent ist und zu viel Coding abnimmt, bis man nicht mehr weiß, wo die Daten entlanggeschubst werden. Außerdem ist es ja eh veraltet und wird nicht mehr gepflegt.

Lars
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Problem mit Verlinkung JSP Dynamische Tabelle Web Tier 7
S Verlinkung von JSF-Seiten in einem gecshützten Bereich Web Tier 2
V Mittels JavaScript Methode aufrufen Web Tier 23
7 kein Absatz mittels request.getParameter()?? Web Tier 8
E Website mittels Programm auf Sicherheit prüfen? Web Tier 2
S JSF Fo_rmulardaten in DB mittels H_i_bernate speichern Web Tier 3
N JSF-Tabelle erstellen aus Datenbank mittels JDBC Web Tier 12
T Back Button bei JSF Anwendung Web Tier 2
J Session ist nach Klick auf Zurück-Button wieder aktiv Web Tier 3
S Button klick soll Java methode aufrufen Web Tier 2
Y Welcher Submit-Button wurde gedrückt? Web Tier 0
O JSF AccessKey auf Button-Beschriftung hervorheben Web Tier 0
G JSF Radio Button ValueChangeListener Wert wird nicht übernommen Web Tier 2
5 Button ID von betätigten Button herausfinden Web Tier 8
M JSF Button - Methode wird nicht aufgerufen Web Tier 4
M JSF Simple Testklasse für Button - MethodNotFoundException? Web Tier 6
J JSF Kein Methodenaufruf mit Button möglich durch PhaseListener (redirect) Problem? Web Tier 2
L in JSF ein download button erstellen Web Tier 4
B Mit JavaServlet Submit Button ermitteln Web Tier 5
T Button im Servlet - Werte übergeben Web Tier 2
K JSF: Tabelle; Button, Stringausgabe Web Tier 2
I Zurück Button mit JSF Command Button Web Tier 2
J location response-header? Browser-Back-Button "deaktivieren" Web Tier 9
MQue in JSP: "Drucken"- Button Web Tier 2
P Zurück-Button des Browsers macht Probleme Web Tier 9
M Struts 2 Submit Button lokalisieren Web Tier 5
S Facelets Form: Validation abschalten bei Abbrechen-Button Web Tier 2
T Button abfrage mit Struts leicht gemacht ? Web Tier 3
A JSF: Button reagiert nicht und nicht verständliche Warnung Web Tier 6
G radio button deselect mit struts Web Tier 7

Ähnliche Java Themen

Neue Themen


Oben