gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:30:22 25 4
gpt4 key购买 nike

当我不使用 Ajax 时,使用相同的代码一切都很好。但是在这里使用 ajax 我得到了相同的空值 public String execute() throws Exception { String strAction = cartItemForm.getAction();/*我在这里使用 ajax 调用得到 null 但简单的 stuts2 得到我在 <s:hidden name="action" value="Add" id="action" /> 中的操作值这意味着获取 add */return "success";

这是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>

这是struts.xml

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

这是我的 Action 类

  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;
}
}

最佳答案

我不确定,如果我理解了你的问题,那么这样做就很简单了。这是一个可能的 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>

关于java - 如何使用 Ajax 和 Struts2 将表单数据发送到 ActionSupport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com