I have this structure:
<div id="head">
<ui:insert name="cabecera"><ui:include src="header.xhtml"/></ui:insert>
</div>
<div id="menu">
<ui:insert name="menu"><ui:include src="menu.xhtml"/></ui:insert>
</div>
<div id="contenedor">
<iframe id="frameCuerpo" src="init.xhtml" name="frameCuerpo" frameborder="0" scrolling="auto" />
</div>
<div id="footer">
<ui:insert name="pie"><ui:include src="footer.xhtml"/></ui:insert>
</div>
To control sessions I have created this method to check if session is expired when I click on any menu item, if expired then redirect to the login page.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(false);
String loginURL = req.getContextPath() + "login.faces";
boolean loggedIn = session != null && session.getAttribute("Username") != null;
boolean loginRequest = loginURL.equals(req.getRequestURI());
if (loggedIn || loginRequest) {
chain.doFilter(request, response);
} else {
res.sendRedirect(loginURL);
}
}
The problem I have is that it is redirecting the login page into the iframe, no to the top of page.