1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.primefaces.extensions.component.session;
23
24 import java.io.IOException;
25
26 import javax.faces.component.UIComponent;
27 import javax.faces.context.ExternalContext;
28 import javax.faces.context.FacesContext;
29 import javax.faces.render.FacesRenderer;
30 import javax.servlet.http.HttpSession;
31
32 import org.primefaces.renderkit.CoreRenderer;
33 import org.primefaces.util.WidgetBuilder;
34
35
36
37
38
39
40
41 @FacesRenderer(componentFamily = Session.COMPONENT_FAMILY, rendererType = SessionRenderer.RENDERER_TYPE)
42 public class SessionRenderer extends CoreRenderer {
43
44 public static final String RENDERER_TYPE = "org.primefaces.extensions.component.SessionRenderer";
45
46 @Override
47 public void encodeBegin(FacesContext facesContext, UIComponent component) throws IOException {
48 Session sessionComponent = (Session) component;
49 Integer reactionPeriod = sessionComponent.getReactionPeriod();
50 if (null == reactionPeriod) {
51 reactionPeriod = 60;
52 }
53
54 WidgetBuilder wb = getWidgetBuilder(facesContext);
55 wb.init("Session", sessionComponent);
56 wb.attr("reactionPeriod", reactionPeriod);
57 wb.attr("multiWindowSupport", sessionComponent.isMultiWindowSupport());
58 ExternalContext externalContext = facesContext.getExternalContext();
59 HttpSession httpSession = (HttpSession) externalContext.getSession(false);
60 if (httpSession != null) {
61 int maxInactiveInterval = httpSession.getMaxInactiveInterval();
62 if (maxInactiveInterval > 0) {
63 wb.attr("max_inactive_interval", maxInactiveInterval);
64 }
65 }
66
67 if (sessionComponent.getOnexpire() != null) {
68 wb.callback("onexpire", "function(e)", sessionComponent.getOnexpire());
69 }
70 if (sessionComponent.getOnexpired() != null) {
71 wb.callback("onexpired", "function(e)", sessionComponent.getOnexpired());
72 }
73
74 wb.finish();
75 }
76 }