Tenho meu manageBean:
public class InicioMB {
private String urlErroAutorizacao = "gov.prodesp.sgu.urlErroAutorizacao";
private String urlInicio = "index";
private SGUAutenticacao autenticacao = null;
private UsuarioVO userVO = null;
private SGUAutorizacao autorizacao = null;
private GrupousuarioVO[] grupos = null;
public InicioMB() {
}
public String validateSessionData() throws IOException {
//dados da session
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
ExternalContext ec = facesContext.getExternalContext();
//informacoes do sgu
ResourceBundle bundle = ResourceBundle.getBundle("sgu-config");
String token = (String) request.getParameter("sguToken");
//verifico se o token eh valido
if (!obterToken(token).equals("")) {
redirecionarPagina(session, bundle.getString(urlErroAutorizacao), request, response, ec);
}
return urlInicio;
}
O método para redirecionamento:
private void redirecionarPagina(HttpSession session, String url, HttpServletRequest request, HttpServletResponse response, ExternalContext ec) throws IOException {
StringBuilder strUrl = new StringBuilder();
String scheme = request.getScheme();
strUrl.append(scheme);
strUrl.append("://");
strUrl.append(request.getServerName());
strUrl.append(":");
strUrl.append("8080");
strUrl.append(url);
ec.redirect(strUrl.toString());
}
O problema é que quando cai na condição onde deveria ser redirecionado ec.redirect(strUrl.toString()); o manage bean continua executando e não efetua o redirecionamento. Eu teria que fazer o redirecionamento para uma página de erro - detalhe a página de erro é uma outra url de um outro servidor.
Alguém saberia como fazer isso?