NavigationHandler.java
2.62 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
package fi.codecrew.moyamgmt.handler;
import java.io.IOException;
import java.io.Serializable;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ConversationScoped
public class NavigationHandler implements Serializable {
private static final long serialVersionUID = -5985927646178070598L;
private static final Logger logger = LoggerFactory.getLogger(NavigationHandler.class);
private String destNavi;
@Inject
private transient Conversation conversation;
public void saveNavigation(String navigation)
{
FacesContext fcont = FacesContext.getCurrentInstance();
HttpServletRequest req = (HttpServletRequest) fcont.getExternalContext().getRequest();
// TODO: Parse navigation correctly
StringBuilder viewidbuilder = new StringBuilder().append(req.getContextPath()).append(navigation);
viewidbuilder.append(".jsf");
saveDestination(viewidbuilder.toString());
}
public void saveDestination(String pageid) {
if (conversation.isTransient()) {
conversation.begin();
}
this.destNavi = pageid;
}
public void redirectToSaved() {
if (destNavi == null || destNavi.isEmpty()) {
HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
destNavi = req.getContextPath();
}
redirectNavigation(destNavi);
}
public void redirectNavigation(String destinationUrl) {
try {
FacesContext.getCurrentInstance().getExternalContext().redirect(destinationUrl);
} catch (IOException e) {
logger.warn("Redirect failed!", e);
}
}
public void forward(String navigation) {
FacesContext fcont = FacesContext.getCurrentInstance();
javax.faces.application.NavigationHandler navihand = fcont.getApplication().getNavigationHandler();
navihand.handleNavigation(fcont, null, navigation);
}
}