如何执行action类的方法而不刷新struts2中的页面

如何执行action类的方法而不刷新struts2中的页面,struts2,Struts2,我正在使用struts2开发一个应用程序。我在JSP页面中有一个按钮,它在单击时执行一个动作方法。我想执行此操作方法,但不刷新页面。我有没有办法做到这一点?这个动作的作用是设置一个整数的值,我只需要在页面上显示它 我的方法: public void setVariable(){ //Code to get a random integer return "SUCCESS"; } 表单的jsp页面代码: <form method="post" action="setVari

我正在使用struts2开发一个应用程序。我在JSP页面中有一个按钮,它在单击时执行一个动作方法。我想执行此操作方法,但不刷新页面。我有没有办法做到这一点?这个动作的作用是设置一个整数的值,我只需要在页面上显示它

我的方法:

public void setVariable(){
    //Code to get a random integer
    return "SUCCESS";
}
表单的jsp页面代码:

<form method="post" action="setVariable">
    <input type="submit" value="Submit" />
</form>

如果我理解正确的话

在struts.xml中

<action name="yourAction" class="ActionClass" >
   <result name="success" type="httpheader" >
      <param name="status">202</param> 
          </result>
 </action> 

我对JSP中Ajax代码的语法不是很确定。试着这样做

为什么不尝试用Ajax来实现呢?您可以执行一个操作,操作数据,然后在JSP中获得结果

在JSP中:

function javascript_function(inputIfAny)
{
    $.getJSON("<s:property value='%{ajaxCallUrl}' />",
        { value: value},
            function(data)
            {
                dataAttributeValue = data.valueToSendToJSP; // If needed
            });

}

<s:url id="ajaxCallUrl" action="actionName" method="ajaxMethod" />
在Struts 2操作中:

public void ajaxAccountUpdateHandle()
{
    Map<String, Object> params = ActionContext.getContext().getParameters();
    String value = params.get("numAcn");
    try
    {
        JsonFactory f = new JsonFactory();
        JsonGenerator generator = f.createJsonGenerator(response.getOutputStream());

        // Do stuff
        generator.writeStartObject();
        generator.writeStringField("valueToSendToJSP", "foo");
        generator.writeEndObject();
        generator.flush();
        generator.close();
    }
    catch (JsonGenerationException e)
    {
    }
    catch (IOException e)
    {
    }
}

这样,您甚至不需要struts XML中的条目。

我尝试过这样做。它只是给了我一个空白页。我尝试了使用GET和POST方法,得到了相同的结果。因此,我尝试使用您的意思是什么来读取变量的值:您甚至不需要struts XML中的条目?您可以不使用id属性而直接使用id属性,这是不推荐使用的。
public void ajaxAccountUpdateHandle()
{
    Map<String, Object> params = ActionContext.getContext().getParameters();
    String value = params.get("numAcn");
    try
    {
        JsonFactory f = new JsonFactory();
        JsonGenerator generator = f.createJsonGenerator(response.getOutputStream());

        // Do stuff
        generator.writeStartObject();
        generator.writeStringField("valueToSendToJSP", "foo");
        generator.writeEndObject();
        generator.flush();
        generator.close();
    }
    catch (JsonGenerationException e)
    {
    }
    catch (IOException e)
    {
    }
}