вызовите действие struts из jquery — нужна помощь в том, как вызвать struts и определить действие struts

#jquery #struts2

#jquery #struts2

Вопрос:

Я довольно новичок в struts, поэтому мне нужно извиниться за мое непонимание. Я пытаюсь выполнить действие struts, которое обновляет мою базу данных с помощью jquery, и мне нужны некоторые рекомендации о том, как это сделать. У меня была попытка, но это неправильно.

У меня есть диалоговое окно jquery в моем jsp (см. Ниже). Вы можете видеть, что при нажатии кнопки в этом диалоговом окне я вызываю функцию с именем myAjaxCall() …

 <s:div id="dialog-form" title="Update" style="display:none">
<s:form id="dform" enctype="multipart/form-data" >
    <s:textfield  name="strid" id="strid" label="Store" readonly="true"  />
    <s:textfield  name="strName" id="strName" label="Store Name" readonly="true" />
    <s:textfield  name="businessDt" id="businessDt" label="Business Date" readonly="true"  />
    <s:textfield  name="openingtime" id="openingtime"  label="Opening time(EST)" />
    <s:textfield  name="closingtime" id="closingtime"  label="Closing time(EST)" />
    <s:textfield  name="reason" id="reason" label="Reason" />
    <s:url id="ajaxDialog" value="/storeCurrentStatusDialog.action"/>
    <table style="border:0"  >
     <tr>
      <td align="center"><input type="button" value="Update" onclick="myAjaxCall()"  ><br/></td>
     </tr>
    </table>
 </s:form>
</s:div>
  

Тогда у меня есть функция jquery с именем myAjaxCall(), которая выглядит следующим образом. Я говорю ему запустить функцию ajax с использованием json.

 function myAjaxCall() {
    var url="${pageContext.request.contextPath}/storeCurrentStatusDialog.action?strid=" document.dform.strid.value "amp;closingtime=" document.dform.closingtime.value "amp;openingtime=" document.dform.openingtime.value "amp;businessDt=" document.dform.businessDt.value "amp;reason=" document.dform.reason.value;

$.ajax({
    type: 'GET',
    url: url,
    dataType: 'json',
    success: function(data){
        console.log(stringify(data));
    }});
  

}

Переменная URL заполняется правильно, но мое действие struts не вызывается. Мой первый вопрос: тип данных, который я отправляю, — json. Будет ли это работать автоматически. И второй вопрос, который у меня есть, — как мне определить мое действие struts в struts.xml файл, чтобы это сработало. Что-то вроде этого? Вернет успех.

     <action name="storeCurrentStatusDialog"
        class="com.mycompany.eposweb.action.StoreCurrentStatusAction"
        method="update">
        <result name="success" type="stream">
            <param name="contentType">text/html</param>
            <param name="inputName">inputStream</param>
        </result>
    </action>
  

Спасибо

Комментарии:

1. Как вы проверили, что действие не вызывается? Также каков ваш класс действий?

Ответ №1:

Если вы отправляете данные в формате json, лучше используйте POST метод и сериализуйте свою форму, как показано ниже

 $.ajax({
    type: 'POST',
    url: 'storeCurrentStatusDialog.action',
    dataType:'json',
    data:$('#dform').serialize(),
    contentType: "application/json; charset=utf-8",
    success: function(data){
        console.log(stringify(data));
    }});
  

Вы можете найти пример Struts2 action class и XML mapping ЗДЕСЬ для json

Комментарии:

1. Можете ли вы помочь мне с тем, как я мог бы определить свое действие struts в xml, пожалуйста?

2. Я думаю, что приведенной выше ссылки для вас достаточно