Wie zum senden von Formular Daten an ActionSupport mit Ajax und Struts2
wenn ich nicht mit Ajax dann alles schön und gut mit dem gleichen code. aber mit ajax hier bin hab null vale für gleiche public String execute() throws Exception { String strAction = cartItemForm.getAction(); /*ich bin geting null hier mit ajax-Aufruf aber einfach stuts2 erste Aktion Wert, die ich in <s:hidden name="action" value="Add" id="action" />
es bedeutet, hinzufügen */return "success"; }
dies ist 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>
Dies ist struts.xml
<action name="Cart" class="struts.cart.action.CartAction">
<result type="json"/>
</action>
Hier ist MEINE Action-Klasse
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;
}
}
Betrachten Sie die Befestigung Ihrer Methode Vorlagen, oder zumindest das löschen der nutzlosen Kommentare.
InformationsquelleAutor ved prakash | 2013-02-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, ob ich Ihre Frage verstehe, ist es sehr einfach, dies zu tun. Hier ist eine mögliche Lösung mit jquery:
wie man formData-Wert in ActionSuport Klasse. @aiwo99
wenn Sie
param
interceptor, können Sie einfach definieren Sie Variablen in Ihrem action-Klasse wird mit dem Namen des Parameters und getter, setterkann jeder eine Antwort haben ? sogar ich bin vor dem gleichen Problem. Ich habe deklarierten member-Variablen in der action-Klasse und die gleichen Namen von Variablen verwendet werden, die in form von Feldern . Wenn also eine action-Methode der Klasse aufgerufen wird, auf "Absenden" (ohne ajax ) der action-Klasse member-Variablen werden immer die Werte. aber wenn wir den Aufruf-Aktion von ajax diejenigen Mitglieder bekommen null-Werte. Habe versucht, per Formular serialisiert es, es funktioniert nicht..
InformationsquelleAutor Jaiwo99