java 如何使用 Ajax 和 Struts2 将表单数据发送到 ActionSupport

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15020981/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 18:14:48  来源:igfitidea点击:

How to send form data to ActionSupport using Ajax and Struts2

javaajaxjsonhibernatestruts2

提问by ved prakash

when am not using Ajax then all well and good with same code. but using ajax here am got null vale for same public String execute() throws Exception { String strAction = cartItemForm.getAction(); /*i am geting null here using ajax call but simple stuts2 getting action value which i have in <s:hidden name="action" value="Add" id="action" />it means getting add */ return "success"; }

当我不使用 Ajax 时,使用相同的代码一切顺利。但是在这里使用 ajax 对于相同的 public String execute() 得到 null vale throws Exception { String strAction = carItemForm.getAction(); /* 我在这里使用 ajax 调用得到 null,但简单的 stuts2 获取我在其中的动作值<s:hidden name="action" value="Add" id="action" />意味着得到添加 */ return "success"; }

this is jsp

这是jsp

  <script type="text/javascript">
  function submitAjax()  
  {  
   JSONobj = {cartItem:{
     description : $("description").val(),
     price :$("price").val(),
     action : $("action").val(),
     quantity :$("quantity").val(),
   } };
   JSONstr = JSON.stringify(JSONobj);

   jQuery.ajax(
    {
        type: 'POST', 
        url: 'Cart.action', 
        data:JSONstr,
        dataType: 'json',
        async: false ,
        contentType: 'application/json; charset=utf-8',
        success: function(){window.alert("done");}
    });
}  

</script>
<s:form>
  <s:hidden name="modelNo"     value="%{#attr.productId}"                    />  
  <s:hidden name="description" value="%{#attr.productName}" id="description" />
  <s:hidden name="price"       value="%{#attr.listprice}"   id="price"       />
  <s:hidden name="action"      value="Add"                  id="action"      />

  <s:submit value="add to cart" cssClass="submit_button" theme="simple"      />
</s:form>

This is struts.xml

这是 struts.xml

 <action name="Cart" class="struts.cart.action.CartAction">
    <result type="json"/> 
 </action>

Here is MY Action Class

这是我的动作课

  public class CartAction extends ActionSupport 
                        implements ModelDriven, Preparable, ServletRequestAware {
  private static final long serialVersionUID = -3670063011948002290L;
public  static final String ADD = "Add";
public  static final String DELETE = "Delete";
public  static final String UPDATE = "Update";  
public  static final String CART_SESSION = "Cart";

    private HttpServletRequest  request;
    private CartItemForm        cartItemForm;

    public String execute() throws Exception {
        String strAction = cartItemForm.getAction();//i am geting null here
        return "success";
    }

    public Object getModel() {
        // TODO Auto-generated method stub
        System.out.println("Cart getModel "+cartItemForm);
        return cartItemForm;
    }

    public void prepare() throws Exception {
        // TODO Auto-generated method stub
        System.out.println("Cart prepare "+cartItemForm);
        cartItemForm=new CartItemForm();
    }

    public void setServletRequest(HttpServletRequest  httpServletRequest) {
        // TODO Auto-generated method stub
        request = httpServletRequest;
    }
}

采纳答案by Jaiwo99

I am not sure, if i have understand your question, it is very straightforward to do this. Here is a possible solution with jquery:

我不确定,如果我理解你的问题,这样做很简单。这是jquery的一个可能的解决方案:

<s:form id="myForm">
  <s:hidden name="modelNo" value="%{#attr.productId}"></s:hidden>  
  <s:hidden id="description" name="description" value="%{#attr.productName}"></s:hidden>
  <s:hidden id="price" name="price" value="%{#attr.listprice}"></s:hidden>
  <s:hidden id="action" name="action" value="Add"></s:hidden>
  <s:submit id="#submit" value="add to cart" cssClass="submit_button" theme="simple"></s:submit>
</s:form>

<script>
$("#submit").click(function(){
        var formData = $("#myForm").serialize(); //get all data from form
          //do the POST thingies
        $.ajax({
            type: "POST",
            url: "url_to_your_struts2_action",
            cache: false,
            data: formData,
            success: onSuccess,
            error: onError
        });

        return false;
});
</script>