2010-08-04 25 views
0

我想調用一個存在於與我的戰爭不同的戰爭中的Servlet。當用戶點擊一個按鈕時,我們需要調用servlet的post方法。爲了實現這一點,我確實看到了一個稍微不同的現有示例,但在這種情況下起作用。從jsf在不同的戰爭中調用servlet post

我正在使用jsf,所以在jsp中有一個h:窗體,裏面有另一個html窗體。下面是代碼:

<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; 
} 

所以單擊該按鈕時,執行的JavaScript提交表單給servlet。但是我可以在螢火蟲中看到我需要提交的第二個表單沒有出現。我不知道如何在不同的戰爭中調用servlet類的post方法。任何想法的歡迎,我真的卡住了!

謝謝。

回答

1

按照HTML規範,它被禁止嵌套<form>元素。 (錯誤)行爲依賴於瀏覽器。有些瀏覽器會發送全部參數,有些瀏覽器只會發送父表單的數據,其他瀏覽器將不發送任何數據。

你想在這裏有一個單一的形式。您可以用普通的香草HTML <form><h:form>完全替換爲期望的action,指向相關的servlet。

+0

這就是我最終做的和它的工作。謝謝! – msharma 2010-08-05 14:52:58

+0

不客氣。 – BalusC 2010-08-05 14:54:52