【发布时间】:2014-09-09 10:51:18
【问题描述】:
我有派生自 DispatchAction 的动作类。我想使用ajax从那里调用一个方法。当我单击下面显示的按钮时,我想使用 InvitationAction 的 add 方法。 错误是“请求[/InvitationAction] 不包含命名方法的处理程序参数。” 提前致谢。
public class InvitationAction extends DispatchAction{
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
InvitationForm invForm = (InvitationForm)form;
Person newPerson = new Person();
newPerson.setFirstName(invForm.getFirstName());
newPerson.setLastName(invForm.getLastName());
invForm.getPersonMap().put(invForm.getKey(), newPerson);
invForm.reset(mapping, request);
return mapping.findForward("success");
}
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
InvitationForm invForm = (InvitationForm)form;
invForm.getPersonMap().remove(invForm.getKey());
return mapping.findForward("success");
}
public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
InvitationForm invForm = (InvitationForm)form;
Person person = invForm.getPersonMap().get(invForm.getKey());
invForm.setFirstName(person.getFirstName());
invForm.setLastName(person.getLastName());
return mapping.findForward("success");
}
}
.jsp端
function doAjaxPost() {
$.ajax({
type: "POST",
url: "/AjaxWithStruts1/InvitationAction.do?action=edit",
success: function(response){
// we have the response
$('#info').html(response);
},
error: function(e){
alert('Error: ' + e);
}
});
}
<input type="button" value="add" onclick="doAjaxPost()"><br/>
struts-config.xml 端
<action-mappings>
<action name="invitationForm" path="/invitation" type="com.raistudies.actions.InvitationAction"
scope="session" input="/index.jsp" parameter="action">
<forward name="success" path="/index.jsp" redirect="true"/>
</action>
</action-mappings>
【问题讨论】:
-
我不确定问题是什么。 Struts 不关心请求是否是 Ajax。只需使用与浏览器 URL 栏中相同的 URL 向操作发出 Ajax 请求。
-
我已经尝试过你所说的,但我遇到了名为 error[object XMLHttpRequest] 的错误。为什么会这样?
-
如果您希望有人回答这个问题,您需要描述正在发生的事情、方式和时间。你甚至没有展示你是如何发出请求的——但到目前为止,它看起来像是一个 JS 问题,或者是一个服务器错误导致它返回到 JS 并且 JS 没有正确处理它。
-
很抱歉。我对问题进行了一些编辑。
-
那么错误是什么?记录它,扩展它。检查电线以查看响应中的内容。检查服务器/错误日志。你需要调试它;我们看不到发生了什么。