Bonjour.

J'essaye de développer une façon de logger les actions faites sur mon futur site.

Pour ce faire j'ai un backing bean par page qui étend un bean général dans lequel se fait la log.

Voici un exemple :

Bean de la page d'accueil

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
import com.ocpsoft.pretty.faces.annotation.URLMapping;
import com.ocpsoft.pretty.faces.annotation.URLMappings;
import com.wsp.project.core.web.BeanPage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
 
@RequestScoped
@ManagedBean(name = "beanPageHome")
@URLMappings(mappings = {
    @URLMapping(id = "home", pattern = "/", viewId = "/home.xhtml"),
    @URLMapping(id = "home-link", pattern = "/accueil", viewId = "/home.xhtml")
})
public class BeanPageHome extends BeanPage {
 
    public BeanPageHome() {
        super();
    }
 
 
}
Bean général
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
package com.wsp.project.core.web;
 
import com.ocpsoft.pretty.PrettyContext;
import com.ocpsoft.pretty.faces.config.mapping.QueryParameter;
import javax.faces.bean.ManagedProperty;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
 
public abstract class BeanPage {
 
    protected HttpServletRequest request;
    protected PrettyContext context;
    protected String prettyId, prettyPattern, prettyViewId;
    @ManagedProperty("beanSession")
    protected BeanSession session;
 
    public BeanPage() {
        request = (HttpServletRequest) (FacesContext.getCurrentInstance().getExternalContext().getRequest());
        context = PrettyContext.getCurrentInstance(request);
        prettyId = context.getCurrentMapping().getId();
        prettyPattern = context.getCurrentMapping().getPattern();
        prettyViewId = context.getCurrentMapping().getViewId();
        logPageAction();
    }
 
    private void logPageAction() {
        String mappingInfo = getUserIdentifier() + " - Request page with infos : ";
        mappingInfo += "[prettyId:" + prettyId + "]" + "[prettyPattern:" + prettyPattern + "]"
                + "[prettyViewId:" + prettyViewId + "]";
 
        if (null != context.getCurrentMapping().getQueryParams()) {
            mappingInfo += "with params : ";
            for (QueryParameter qp : context.getCurrentMapping().getQueryParams()) {
                mappingInfo += "[" + qp.getName() + ":" + qp.getValue() + "]";
            }
        }
 
        System.out.println(mappingInfo);
    }
 
 
    public String getUserIp() {
        return request.getHeader("X-FORWARDED-FOR");
    }
 
    public String getUserIdentifier() {
        return "User with session code : " + session.getUserUniqueSessionCode() + " and ip : " + getUserIp();
    }
 
    public BeanSession getSession() {
        return session;
    }
 
    public void setSession(BeanSession session) {
        this.session = session;
    }
}
et pour avoir la vue d'ensemble le bean de session

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
package com.wsp.project.core.web;
 
import com.wsp.project.core.utils.Encryption;
import java.util.UUID;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
 
@SessionScoped
@ManagedBean(name = "beanSession")
public class BeanSession {
 
    private String userUniqueSessionCode;
 
    public BeanSession(){
        userUniqueSessionCode = Encryption.encryptSha256(UUID.randomUUID().toString());
    }
 
    public String getUserUniqueSessionCode() {
        return userUniqueSessionCode;
    }
 
 
}
Mon problème est le suivant : je passe bien dans mon BeanPageHome car j'ai ma redirection qui est faite... seulement je n'appelle pas le constructeur et donc je ne log rien.

Si quelqu'un à une idée ?

En vous remerciant à l'avance.