1

我正在尝试通过 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 的情况下做同样的事情时,它工作得很好。

请帮忙....

4

0 回答 0