robson
robson

Reputation: 1673

FacesContext redirect with POST parameters

I need to redirect page into external site with POST parameters, but I cannot use vanilla HTML <form action="url"> like it is explained here:

JSF commandButton - passing POST params to an external site

because then the form would be within a jsf form - and it doesn't work.

Is it possible to use:

FacesContext.getCurrentInstance().getExternalContext().redirect("http://example.com");

with POST parameters without additional vanilla form somehow? Or maybe there is other way to acheive this without form?

Upvotes: 0

Views: 4264

Answers (1)

maqjav
maqjav

Reputation: 2434

Try something like this:

JAVASCRIPT:

function redirect() {
    document.getElementById("mySubmitButton").submit();
}

XHTML:

<h:form>
     <span onclick="javascript:redirect()" class="linkClass">REDIRECT</span>
</h:form>

<div style="display:none:"> <!-- If you want it hidden -->
    <form action="http://external/myplace.html" method="post"> 
        <input type="hidden" value="value1"></input>
        <input type="submit" id="mySubmitButton"</input>
    </form>
</div>

EDIT: Added another test.

PASSING DYNAMIC PARAMETER:

In this example we assume that we are always going to send a value.

JAVASCRIPT:

function redirect(dynamicValue) {
    document.getElementById("dynamicField").value = dynamicValue;
    document.getElementById("mySubmitButton").submit();
}

XHTML:

<h:form>
     <span onclick="javascript:redirect('myValue')" class="linkClass">REDIRECT</span>
</h:form>

<div style="display:none:"> <!-- If you want it hidden -->
    <form action="http://external/myplace.html" method="post"> 
        <input id="dynamicField" type="hidden" value=""></input>
        <input type="hidden" value="value1"></input>
        <input type="submit" id="mySubmitButton"</input>
    </form>
</div>

Upvotes: 1

Related Questions