Вызов сервлета из jsf в разные войны - PullRequest
0 голосов
/ 05 августа 2010

Я хочу назвать Сервлета, который существует в войне, отличной от моей войны.Когда пользователь нажимает кнопку, нам нужно вызвать метод post сервлета.Чтобы реализовать это, я увидел существующий пример, который немного отличается, но работает в этом случае.

Я использую jsf, поэтому в jsp есть форма ah: с другой 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, который отправляет форму сервлету.Однако в Firebug я вижу, что вторая форма, которую мне нужно отправить, не появляется.Я не уверен, как я могу вызвать метод post класса сервлетов в другой войне.Любые идеи приветствуются, я действительно застрял!

Спасибо.

1 Ответ

1 голос
/ 05 августа 2010

В соответствии со спецификацией HTML запрещено вложить <form> элементы. Поведение (неправильное) зависит от браузера. Некоторые браузеры будут отправлять все параметры, некоторые браузеры будут отправлять только данные родительской формы, другие браузеры ничего не будут отправлять.

Вы хотите иметь одну форму здесь. Вы можете полностью заменить <h:form> простым ванильным HTML <form> с желаемым action, указывающим на рассматриваемый сервлет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...