Saltar al contenido

Cómo hacer una redirección en la carga de la página en JSF 1.x

No busques más por todo internet ya que llegaste al sitio adecuado, contamos con la respuesta que necesitas recibir sin complicarte.

Establezca los parámetros de consulta GET como propiedades administradas en faces-config.xml para que no necesite recopilarlos manualmente:


    forward
    com.example.ForwardBean
    request
    
        action
        #param.action
    
    
        actionParam
        #param.actionParam
    

De esta manera la solicitud forward.jsf?action=outcome1&actionParam=123 permitirá que JSF establezca el action y actionParam parámetros como action y actionParam propiedades de la ForwardBean.

Crear una vista pequeña forward.xhtml (tan pequeño que cabe en el búfer de respuesta predeterminado (a menudo 2 KB) para que el manejador de navegación pueda restablecerlo; de lo contrario, debe aumentar el búfer de respuesta en la configuración del servletcontainer), que invoca un método de bean en beforePhase de El f:view:



    

El ForwardBean puede verse así:

public class ForwardBean 
    private String action;
    private String actionParam;

    public void navigate(PhaseEvent event) 
        FacesContext facesContext = FacesContext.getCurrentInstance();
        String outcome = action; // Do your thing?
        facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, null, outcome);
    

    // Add/generate the usual boilerplate.

El navigation-rule habla por sí mismo (nótese el entradas que harían ExternalContext#redirect() en vez de ExternalContext#dispatch() debajo de las sábanas):


    
        outcome1
        /outcome1.xhtml
        
    
    
        outcome2
        /outcome2.xhtml
        
    


Una alternativa es utilizar forward.xhtml como


#forward

y actualizar el navigate() método a invocar en @PostConstruct (que se invocará después de la construcción del bean y la configuración de todas las propiedades administradas):

@PostConstruct
public void navigate() 
    // ...
    

Tiene el mismo efecto, sin embargo, el lado de la vista no es realmente autodocumentado. Todo lo que hace básicamente es imprimir ForwardBean#toString() (y por la presente implícitamente construyendo el bean si aún no está presente).


Nota para los usuarios de JSF2, hay una forma más limpia de pasar parámetros con y más robusta de manejar la redirección/navegación por . Ver también entre otros:

  • Pulse un método de bean y redirija en una solicitud GET
  • ¿Hay alguna manera fácil de preprocesar y redirigir las solicitudes GET?

FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse)context.getExternalContext().getResponse();
response.sendRedirect("somePage.jsp");

deberías usar action en lugar de actionListener:


y en el método cercano aciertas algo como:

public String close() 
   return "index?faces-redirect=true";

donde índice es una de sus páginas (index.xhtml)

Por supuesto, todo este personal debe estar escrito en nuestra página original, no en la intermedia. y dentro de la close() puede usar los parámetros para elegir dinámicamente a dónde redirigir.

Acuérdate de que puedes optar por la opción de decir .

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *