tags:

views:

18

answers:

1

Hi, I want to call a Servlet which exists in a different war from my war. When user clicks a button we need to call the post method of the servlet. To implement this I did see an existing example which is slightly different but works in that case.

I am using jsf, so in the jsp there is a h:form with another html form inside of it. Below is the code:

<h:form>     
<div id="gform" class="column span-20 append-1">

    <h:outputText value="Text." /><br/><br/>

  <h:commandLink id="addPaymentButton" styleClass="button" onclick='autorenew();return false;'> <span><h:outputText value="Payment Option"/></span> </h:commandLink>&nbsp;&nbsp;
  <a id="noThanksButton" href="#"><span><h:outputText value="No Thanks"/></span></a><br/><br/><br/>


  <h:outputText style="color:grey" value="Some text" />
     <div> </div>

    </div>


    <form id="hiddenSubmit" method="post" action="https://localhost.myapp.com/myapp/LoginRouter" >  
        <input type="hidden" name="redirectUrl" value="/myapp/customers/addNewSavedCCInfo.faces"/>
        <input type="hidden" name="jump_message" value="IAmJumpingToCC"/>
        <input type="hidden" name="jump_url" value="/premiumServices/myPage.htm"/>
        <input id="hiddenSubmitButton" type="submit" name="submit" style="display: none" value='' />
    </form>

    </h:form>
<script language="javascript">

function autorenew(){
    window.alert('In js fnt');
    document.hiddenSubmit.getElementById('hiddenSubmitButton').click();
    window.alert('In js fnt COMPLETE');
    return false;
}

So when the button is clicked, javascript is executed which submits the form to the servlet. However I can see in firebug that the second form which I need to submit does not appear. I am not sure how I can call the post method of a servlet class in a different war. Any ideas welcome, I am really stuck!

Thanks.

A: 

As per the HTML specification it's forbidden to nest <form> elements. The (mis)behaviour is browser dependent. Some browsers will send all parameters, some browsers will send only the data of the parent form, other browsers will send nothing.

You want to have a single form here. You can perfectly replace the <h:form> by a plain vanilla HTML <form> with the desired action pointing to the servlet in question.

BalusC
That is what I ended up doing and its working. Thank you!
msharma
You're welcome.
BalusC