如何在Struts-1中使用Ajax调用Custom方法?

时间:2019-04-27 09:58:42

标签: javascript java ajax jsp struts-1

我正在处理在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数据?

请让我知道。

0 个答案:

没有答案