redirect from my public void method to an xhtml

1

I did a validation in a method of type boolean . How is it made from método public void to redirect? I know that a string method with return is enough but I do not know in a signature method void

Method:

public void login() {
    RequestContext context = RequestContext.getCurrentInstance();
    FacesMessage message = null;
    boolean loggedIn = false;

    if(nombre != null && nombre.equals("admin") && password != null && password.equals("admin")) {
        loggedIn = true;            
        message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido", nombre);
    } else {
        loggedIn = false;
        message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Error de usuario", "Credenciales invalidas");
    }

    FacesContext.getCurrentInstance().addMessage(null, message);
    context.addCallbackParam("loggedIn", loggedIn);
}   
    
asked by Alexander Gil Tafur 04.05.2016 в 17:48
source

2 answers

1

To redirect you use you need something like this:

FacesContext.getCurrentInstance().getExternalContext().redirect("ruta/de/archivo");

    
answered by 27.10.2016 в 19:24
0

In my opinion, the best solution in this case is to modify the declaration of your method so that it returns a String with the route to redirect. In case of validation failure, a return of null would be enough to stop the navigation. So, your code would be:

public String login() {
    RequestContext context = RequestContext.getCurrentInstance();
    FacesMessage message = null;
    boolean loggedIn = false;

    if(nombre != null && nombre.equals("admin") && password != null && password.equals("admin")) {
        loggedIn = true;            
        message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido", nombre);
    } else {
        loggedIn = false;
        message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Error de usuario", "Credenciales invalidas");
        return null;
    }

    FacesContext.getCurrentInstance().addMessage(null, message);
    context.addCallbackParam("loggedIn", loggedIn);
    return "rutaAInicio";
}   

The path to your xhtml is "startpath".

    
answered by 03.04.2017 в 10:42