$ .ajax发布到struts2操作返回内部服务器错误

时间:2011-03-30 14:51:31

标签: jquery struts2

我正在尝试执行此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>

1 个答案:

答案 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值。