我正在处理在Struts-1上编码的遗留代码,并且我试图Ajax从jsp页面调用自定义方法到扩展“ Action类”的Action类,但是并未被调用,而是“ execute”方法被调用。 我在哪里做错了?请提出建议。
我不能更改任何现有代码,但是我需要在当前JSP上实现一些验证,为此,我需要调用一些Ajax调用。为此,我编写了一些自定义方法,但是我无法调用它们,而是调用了在该Action类上实现的execute方法。
struts-config.xml:
<!-- Form Beans -->
<form-beans>
<form-bean name="budgetForm" type="com.bean.BudgetForm">
</form-bean>
</form-beans>
<!-- Action Mapping -->
<action-mappings>
<action name="budgetForm" path="/validateBudget" scope="request" type="com.actions.SaveBudget" parameter="parameter" input="/com/budget.jsp"
validate="false" >
<forward name="validateBdg" path="/com/budget.jsp"></forward>
</action>
</action-mappings>
BudgetForm类:
private String parameter = "";
public String getParameter()
{
return parameter;
}
public void setParameter(String parameter)
{
this.parameter = parameter;
}
JS:
$("#valBtnId").click(function(){
$.ajax({
type: 'post',
url: '/validateBudget.do?parameter=validateBdg',
async: false,
cache: false,
processData:false,
success: function(response) {
alert("Success : " + response);
},
error: function(e) {
alert("Fail");
}
});
});
动作类:
public class SaveBudgetAction extends Action {
@SuppressWarnings("static-access")
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
//// Some code
forward = mapping.findForward("loadBudget");
return (forward);
}
public ActionForward validateBdg(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
//// Some code
return <Need to return some JSON Data, HOW?>;
}
}
按照我的期望,Ajax必须从validateBdg
类调用SaveBudgetAction
方法,但它正在调用execute
方法。
我又如何从验证方法接收回JSON数据?
请让我知道。