#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. Я думаю, что приведенной выше ссылки для вас достаточно