Hallo zusammen,
ich habe folgendes Szenario:
Über ein Template (basic.xhtml und header.xhtml):
welches in der Startseite (index.xhtml):
integriert ist (da der Header je nach Situation - angemeldet oder abgemeldet - immer gleich aussehen soll).
Der Benutzer kommt auf die Startseite (index.xhtml) und hat hier ohne Anmeldung nur rudimentäre Funktionsmöglichkeiten.
Wählt er nun den <h
utputLink> zur Login-Seite (login.xhtml) wird er zu dieser weitergeleitet:
Auf dieser Befinden sich 2 commandButtons. Der erste Button (<p:commandButton ... value="Anmelden">) ist für die Anmeldung gedacht und ruft die entsprechende Bean auf. Der zweite Button (<p:commandButton ... value="Zurück" >) führt den Benutzer ohne die Formularfelder zu beachten wieder zurück auf die Startseite (index.xhtml).
Das Problem ist, wie ich den Benutzer mittels des Beans als Angemeldet zur index.xhtml zurücksende und dies auch so anzeige. Den login bzw. die ganze Seite soll in JSF 2.0 realisiert werden.
Hier die noch nicht fertiggestellte Bean:
Ziel soll es sein, das bei falscher Kennwort- oder Benutzer-Eingabe der Benutzer eine Fehlermeldung auf der Lohin-Seite (login.xhtml) erhält. Ist der login erfolgreich, so soll dieser zur Startseite (index.xhtml) weitergeleitet werden und in dieser sollen nun weitere Funktionalitäten sichtbar sein, solange bis sich dieser wieder abmeldet.
Da ich noch was neu im Bereich J2EE sowie JSF bin, bin ich mir nicht ganz sicher wie ich das (am besten) realisieren soll
Bzw. wie kann ich dafür sorgen das nach erfolgreicher Anmeldung in der login.xhtml ich nach der Weiterleitung (wie?) einige Komponenten sichtbar werden?
Vielen Dank schon mal für Eure Unterstützung
Viele Grüße, Daniel
ich habe folgendes Szenario:
Über ein Template (basic.xhtml und header.xhtml):
Java:
basic.xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Function Box</title>
<h:outputStylesheet name="skin.css" library="theme" />
</h:head>
<h:body>
<div id="header">
<ui:insert name="header">
<ui:include src="/WEB-INF/template/Header.xhtml"/>
</ui:insert>
</div>
<div id="content">
<ui:insert name="content">
</ui:insert>
</div>
<div id="footer">
<ui:insert name="footer">
<ui:include src="/WEB-INF/template/Footer.xhtml"/>
</ui:insert>
</div>
</h:body>
</html>
Java:
header.xhtml:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
</h:head>
<h:body>
<h:form>
<h:panelGrid columns="4" style="padding:4px; margin: 0 auto;">
<h:graphicImage library="images" name="pic.png"
style="width: 80%; height:80% "></h:graphicImage>
<h:inputText value="#{funcBean.darst}" "></h:inputText>
<p:commandButton value="Run" action="run" />
<h:outputLink value="login.jsf"><h:outputText value="Anmelden" /></h:outputLink>
</h:panelGrid>
</h:form>
</h:body>
</html>
Java:
index.xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<ui:composition template="/WEB-INF/template/basic.xhtml">
<ui:define name="content">
</ui:define>
</ui:composition>
</html>
Der Benutzer kommt auf die Startseite (index.xhtml) und hat hier ohne Anmeldung nur rudimentäre Funktionsmöglichkeiten.
Wählt er nun den <h
Java:
login.xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<h:outputStylesheet name="skin.css" library="theme" />
<title>JESL - Login</title>
</h:head>
<h:body>
<h:form>
<p:panel id="panel" header="JESL - Login" style="margin-bottom:10px;">
<p:messages />
<h:panelGrid columns="3">
<h:outputLabel for="username" value="Benutzername: " />
<h:inputText id="username" value="#{loginBean.username}" required="true" label="Benutzername" />
<p:message for="username" />
<h:outputLabel for="password" value="Kennwort: " />
<h:inputSecret id="password" value="#{loginBean.password}" required="true" label="Kennwort"/>
<p:message for="password" />
</h:panelGrid>
<p:commandButton ajax="false" value="Anmelden" actionListener="#{loginBean.CheckValidUser}" />
<p:commandButton immediate="true" ajax="false" id="index" value="Zurück" action="/index.xhtml"/>
</p:panel>
</h:form>
</h:body>
</html>
Auf dieser Befinden sich 2 commandButtons. Der erste Button (<p:commandButton ... value="Anmelden">) ist für die Anmeldung gedacht und ruft die entsprechende Bean auf. Der zweite Button (<p:commandButton ... value="Zurück" >) führt den Benutzer ohne die Formularfelder zu beachten wieder zurück auf die Startseite (index.xhtml).
Das Problem ist, wie ich den Benutzer mittels des Beans als Angemeldet zur index.xhtml zurücksende und dies auch so anzeige. Den login bzw. die ganze Seite soll in JSF 2.0 realisiert werden.
Hier die noch nicht fertiggestellte Bean:
Java:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.validation.constraints.*;
@ManagedBean
@SessionScoped
public class loginBean {
@Size(min=2, max=30) @Pattern(regexp = "[\\s\\w-,!\\.]*", message = "must match a-z,A-Z,0-9 or !,-_.")
private String username;
@Size(min=2, max=20) @Pattern(regexp = "[\\s\\w-,!\\.]*", message = "must match a-z,A-Z,0-9 or !,-_.")
private String password;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getUsername ()
{
return username;
}
public void setUsername (final String username)
{
this.username = username;
}
public String getPassword ()
{
return password;
}
public void setPassword (final String password)
{
this.password = password;
}
/*
public void checkPW(){
} */
public String CheckValidUser(){
if(username.equals("testuser") && password.equals("testpw")){
return "/index.xhtml";
}
else{
this.setMessage("Sie haben einen falschen Benutzernamen oder ein falsches Kennwort eingegeben");
return "";
}
}
}
Ziel soll es sein, das bei falscher Kennwort- oder Benutzer-Eingabe der Benutzer eine Fehlermeldung auf der Lohin-Seite (login.xhtml) erhält. Ist der login erfolgreich, so soll dieser zur Startseite (index.xhtml) weitergeleitet werden und in dieser sollen nun weitere Funktionalitäten sichtbar sein, solange bis sich dieser wieder abmeldet.
Da ich noch was neu im Bereich J2EE sowie JSF bin, bin ich mir nicht ganz sicher wie ich das (am besten) realisieren soll
Bzw. wie kann ich dafür sorgen das nach erfolgreicher Anmeldung in der login.xhtml ich nach der Weiterleitung (wie?) einige Komponenten sichtbar werden?
Vielen Dank schon mal für Eure Unterstützung
Viele Grüße, Daniel
Zuletzt bearbeitet: