在不同的战争中从jsf调用servlet帖子

时间:2010-08-04 21:30:16

标签: jsf servlets post

我想要召唤一个存在于与我的战争不同的战争中的Servlet。当用户单击按钮时,我们需要调用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。但是我可以在firebug中看到我需要提交的第二种形式没有出现。我不确定如何在不同的战争中调用servlet类的post方法。欢迎任何想法,我真的被卡住了!

感谢。

1 个答案:

答案 0 :(得分:1)

根据HTML规范,禁止嵌套<form>元素。 (mis)行为取决于浏览器。有些浏览器会发送所有参数,有些浏览器只会发送父表单的数据,其他浏览器则不会发送任何内容。

你想在这里有一个表格。您可以完全用普通的HTML <h:form>替换<form>,并将所需的action指向相关的servlet。