我从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应用程序,我也没有使用注释。整个应用是用配置而不是注释编写的。
答案 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() ...
}