我正在尝试执行此AJAX帖子,但收到服务器500错误。如果我不发送任何数据,我可以看到它击中控制器中设置的断点。但是,当我发送数据时,它不会返回500错误。救命?感谢。
在firebug控制台中,
请求标头有Content-Type application/x-www-form-urlencoded; charset=UTF-8
和响应为com.hearsay.example.mktpx.ui.action.LoadDefaultsAction.retrieveBenchmark()
代码:
$.ajax( {
type : "POST",
url : "loadBenchMark",
data : {'ruleset':'1'},
success : function(data) {
console.log("success");
},
error:error : function(request, textStatus, errorThrown) {
console.log("Error Thrown:" +request.statusText);
}
});
行动类:
public String retrieveBenchmark(int ruleset) {
setBenchmarkProductList(retrieveBenchmarkProductList());
return SUCCESS;
}
struts.xml中
<action name="loadBenchMark"
class="com.hearsay.example.mktpx.ui.action.LoadDefaultsAction" method="retrieveBenchmark">
<result type="json"></result>
</action>
答案 0 :(得分:1)
首先,从方法中删除ruleset
参数。然后,使用标准的getter和setter方法在action类中添加一个实例变量 - 如下所示:
private int ruleset // or String, if you're passing String values
public int getRuleset() {
return this.ruleset;
}
public void setRuleset(int ruleset) {
this.ruleset = ruleset;
}
这是将参数传递给Struts操作的方式 - Struts将调用相应的setter。请记住使用正确的数据类型 - 不要为String
变量等传递int
值。