我正在尝试通过 ajax 调用将表单数据发送到 struts2 操作。我已经阅读了 stackoverflow 以及其他教程中的许多帖子。即使我正确地遵循了所有步骤,我在操作方法中得到了空值。
请帮我解决问题。这篇文章可能是重复的,但我在任何旧帖子中都没有找到正确的答案。
JSP 代码
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
var dataObj = $("#dForm").serialize();
$("#submitdata").click(function(){
$.ajax( {
traditional: true,
type: "POST",
url: "data/postData",
contentType: "application/x-www-form-urlencoded",
async: false,
data : dataObj,
success: function(response) {
alert("success "+response);
},
error: function(e) {
alert("error "+e.Message);
}
});
});
</script>
<s:form name="dataform" id ="dForm" method="post">
<s:textarea id="data" name="data" class="data" rows="4" cols="100" />
<s:submit type="submit" value="submit" id="submitdata" />
</s:form>
动作类
public class DataAction {
String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String postData() {
System.out.println("** postData called *** "+getData());
//Here getData always return null.
return "Success";
}
}
Struts.xml
<package name="Data" extends="json-default" namespace="data">
<action name="postData" class="com.data.action.DataAction"
method="postData">
<result type="json"></result>
</action>
</package>
还需要做什么?此外,当我在 ajax 中设置 async: true 时,操作方法永远不会被调用。好的,我主要关心的是为什么 Data 为 null ?
当我在没有 ajax 的情况下做同样的事情时,它工作得很好。
请帮忙....