使用ajax调用时,在struts 2动作中获取null值

时间:2013-07-27 03:23:30

标签: java ajax jquery struts2

我正在尝试通过ajax调用将表单数据发送到struts2操作。 我在stackoverflow以及其他教程中经历了很多帖子。 即使我正确地遵循了所有步骤,我也会在action方法中获得null值。

请帮我解决这个问题。这篇文章可能是重复的帖子,但我在任何旧帖子中都找不到合适的答案。

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时,动作方法永远不会被调用。 好吧,我主要担心的是数据为空的原因?

当我在没有ajax的情况下做同样的事情时,它的效果非常好。

请帮忙......

0 个答案:

没有答案