# f:event preRenderView Trigger wird nicht ausgeführt



## TimSkyp (19. Jun 2012)

Hallo

Ich bin gerade dabei einen Basic login in meiner Webanwendung zu erstellen

Ich benutze dafür ein Realm vom glassfish-Server

Mein Konzept ist:
Wenn der Benutzer sein Profil (myProfile.xhtml) sehen will dann muss er/sie sich vorher einlogen.
Der Realm und die das Constaint für die Seite myProfile.xhtml funktioniert und passt auch so.

Damit jedoch der richtige Benutzer (richtige Email Adresse) gefunden wird hab ich in meiner Seite myProfile.xhtml einen preRenderView Trigger eingebunden der feuert eine Methode die mir eine passende email Adresse sucht oder wenn keine gefunden wird eben nicht.

Der Trigger funktioniert jedoch nicht 
er geht nie in die Methode die ich im listender angegeben hab??
Ich weiß echt nicht wieso ??  ???:L

Vielleicht weiß jemand was ich vergessen hab, damit es nicht funktioniert

Hier ist mal mein Trigger und meine Methode die aufgerufen werden sollte (die aber nicht aufgerufen wird)

[XML]
<f:metadata>
        <f:event type="preRenderView"
                 listener="#{journeyController.initCurrentUser()}" />
    </f:metadata>
[/XML]


```
public void initCurrentUser() {
        if (!FacesContext.getCurrentInstance().isPostback()) {
            Person person = personService.findByEmail(
                    FacesContext.getCurrentInstance().getExternalContext().getRemoteUser());
            getSelected().setDriver(person);
        }
    }
```


Ich hab meinen Trigger einfach ganz oben in meinem xhtml file eingefügt. 
Laut einer Erklärung sollte es so funktionieren.

Ich freue mich über jeden Kommentar.

lg.


----------



## TimSkyp (19. Jun 2012)

Ich hab mal probiert meinen Trigger wo anders zu platzieren.

Wenn ich ihn in mein Master template file schmeiße funktioniert er.
Was könnte falsch sein damit er in dem bestimmten file nicht erreicht wird???


----------



## TimSkyp (20. Jun 2012)

Hallo, 

ich bin grade wieder auf etwas drauf gekommen was schuld sein kann
Wenn ich in meinem web.xml file den security-constraint weggeb der genau für die 
Seite steht in der der Trigger ausgeführt werden soll dann führt er den listender aus.

Nur Wenn ich sie drin hab dann geht's nicht. Ich brauch den constaint aber unbedingt, weil der User ja nicht unangemeldet sein Profil sehen soll, sonst würd er ja nichts sehen.

Hier ist mal die security-constraint von meinem web.xml file

[XML]
 <security-constraint>
        <display-name>PersonConstraint</display-name>
        <web-resource-collection>
            <web-resource-name>PersonPages</web-resource-name>
            <description/>
            <url-pattern>/faces/pages/carmania/myProfile.xhtml</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <description/>
            <role-name>Person</role-name>
        </auth-constraint>
    </security-constraint>
[/XML]


Hat wer eine Ahnung warum sich die irgendwie im weg sind.
Ich weiß nämlich echt nicht mehr weiter

HILFE!!!!!

lg.


----------



## JimPanse (20. Jun 2012)

Der Security-Filter greift bevor deine View gerendet wird d.h. wenn der Benutzer nicht angemeldet ist wird dein Event nicht ausgeführt.


Warum nimmst du nicht stattdesen @PostConstruct?


----------



## TimSkyp (20. Jun 2012)

Ja, der login hat nicht funktioniert

Hab unabsichtlich das Passwort beim Benutzer-Anlegen zwei mal gehasht

Jetzt funktionierst!!


----------

