2011-03-23 38 views
8

Tengo una página JSF que redirige a través de context.getExternalContext().redirect(url); donde la URL es algo. como login.jsf? token = foobarJSF: redirigir a la url como POST no como OBTENER

Lo que quiero ahora es enviar el token a través de POST no a través de la solicitud GET. Para que no aparezca en la url, ¿es posible con JSF?

Respuesta

15

No es posible con HTTP, por lo que tampoco con JSF. Sin embargo, hay varias formas de lograr el requisito.

Ponerlo en el alcance de la sesión. En el bean detrás de la página redireccionada, léala y quítela del alcance de la sesión. O cuando está utilizando JSF 2.0, use el alcance del flash.

Reenviar a una página que contiene un formulario POST que apunta a la URL deseada, que tiene el token como valor de entrada oculto e incluye algún código JS que hace form.submit() en la carga de la página.

8

Sí se puede hacer esto mediante la reorientación de su bean de respaldo a alguna página temporal que contiene todos los valores ocultos y utilizar form.submit(); Ejemplo:

Copia Bean:

public String submitValue() { 
     return "temp"; 
} 

temporary.jsf

<h:form id="JsfTemp" prependId="false"> 
    <h:outputText id="welcomeOutput" value="Test Sending form"/> 
    <h:inputHidden id="Merchant_Number" value="#{paymentBean.paymentDetails.merchantNumber}" /> 
</h:form> 
</body> 

<script type="text/javascript"> 
    function submitPage() { 
    document.getElementById("JsfTemp").action="http://localhost:9090/TestClient/HelloWorld"; 
    document.getElementById("JsfTemp").submit(); 
    } 
    submitPage(); 
</script> 
+1

Esto ya se menciona en el 3er párrafo de la primera respuesta. – BalusC

+0

Yup BalusC solo quería explicar esas cosas. Gracias por publicar que me ayudó mucho. –

Cuestiones relacionadas