hallo,
ich habe folgendes Problem:
Ich möchte beim Betreten der Seite überprüfen, ob ein User bereits aktiviert wurde.
Das mache ich über den PhaseListener
Im Link ist ein AktivierungsKey. Diesen bekomme ich auch durch ExternalContext extCtxt.
Nun muss ich aber eine Datenbankabfrage machen, ob zu irgendeinem User dieser Aktivierungsschlüssel gibt.
Diese Methode ist aber in einer Service Klasse.
Bei diesem Aufruf bekomme ich immer eine NullPointerException.
Demnach ruft der PhaseListener nicht die Service Klasse auf, in der diese Methode ist.
Muss ich irgendwo noch diese Service Klasse deklarieren (web.xml oder faces-config) ?
Hier die Methode im PhaseListener:
Der Aufruf in faces-config
ich habe folgendes Problem:
Ich möchte beim Betreten der Seite überprüfen, ob ein User bereits aktiviert wurde.
Das mache ich über den PhaseListener
Im Link ist ein AktivierungsKey. Diesen bekomme ich auch durch ExternalContext extCtxt.
Nun muss ich aber eine Datenbankabfrage machen, ob zu irgendeinem User dieser Aktivierungsschlüssel gibt.
Diese Methode ist aber in einer Service Klasse.
Bei diesem Aufruf bekomme ich immer eine NullPointerException.
Demnach ruft der PhaseListener nicht die Service Klasse auf, in der diese Methode ist.
Muss ich irgendwo noch diese Service Klasse deklarieren (web.xml oder faces-config) ?
Hier die Methode im PhaseListener:
Code:
public void beforePhase(PhaseEvent event) {
Map<String, Object> sessionMap = FacesContext.getCurrentInstance()
.getExternalContext().getSessionMap();
try {
Object principal = SecurityContextHolder.getContext()
.getAuthentication().getPrincipal();
// Informationen zum eingeloggten Benutzer bekommen
//UserDetails user = (UserDetails) principal;
// Wenn der User noch nicht eingeloggt ist, sondern ein sog.
// "anonymousUser" ist, dann
if (principal.equals("anonymousUser")) {
System.out.println("2");
principal = null;
}
if (principal == null) {
FacesContext jsf = FacesContext.getCurrentInstance();
ExternalContext extCtxt = jsf.getExternalContext();
String activateKey = extCtxt.getRequestParameterMap()
.get("act");
System.out.println("Activation KEy: " + activateKey);
if (activateKey != null) {
System.out.println("5");
try {
System.out.println("6");
userSpring.findUserByActivationKey(activateKey);
System.out.println("7");
} catch (UserNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
catch (NullPointerException e) {
sessionMap.clear();
}
System.out.println("Before Phase: " + event.getPhaseId());
}
Der Aufruf in faces-config
Code:
<lifecycle>
<phase-listener>com.example.util.QueryPhaseListener</phase-listener>
</lifecycle>