来自Ajax GET

时间:2018-07-30 21:15:09

标签: struts2 struts

我从JavaScript发出GET Ajax请求

    $.ajax({
        type: "GET", 
        url: "myMethod?id=" + id, 
        success: function(data) {
           // ...
        } 

    });

服务器应用程序是带有struts.xml的Struts。该操作在struts.xml中映射为

<action name="myMethod" method="myMethod" class="myapp.SomeClass">
        <result type="json">
            <param name="contentType">text/plain</param>
        </result>       
    </action>   

并且该类具有采用参数的方法,

public String myMethod(int id) {
  //..      
}

但是我遇到的错误是

java.lang.NoSuchMethodException: myapp.myMethod()

从这个线程我知道Struts不支持参数化映射方法, Calling method with arguments in struts 2?

但是他们的解决方案(引入Action属性)在这里似乎不合适。 id 不是是服务器维护的表单字段或操作属性,它是从JS层传入的。

那么如何在Struts中使用GET参数处理这种自定义JS Ajax方案?

即使这是一个Struts2应用程序,我也没有使用注释。整个应用是用配置而不是注释编写的。

1 个答案:

答案 0 :(得分:1)

对于Struts中的数据绑定,您必须将int id设置为具有其setter和getter的操作类的字段,并且该方法应与此类字段一起使用,而不是将其作为参数。

public class ExampleAction extends ActionSupport {
  private Integer id;

  public String method() {
    doSomething(this.id);
    return SUCCESS;
  }

  public void setId(Integer id) ...
  public String getId() ...
}