Comment envoyer des données de formulaire à ActionSupport à l'aide d'Ajax et Struts2
quand suis pas à l'aide d'Ajax alors très bien avec le même code. mais à l'aide d'ajax je suis là suis nulle vale pour la même Chaîne publique execute() throws Exception { String strAction = cartItemForm.getAction(); /*je suis geting null ici à l'aide d'ajax appel, mais simple stuts2 arriver valeur de l'action que j'ai dans <s:hidden name="action" value="Add" id="action" />
cela signifie obtenir ajouter */return "succès"; }
c'est 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>
C'est struts.xml
<action name="Cart" class="struts.cart.action.CartAction">
<result type="json"/>
</action>
Voici MA Classe de l'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;
}
}
Envisager la fixation de votre méthode de modèles, ou à tout le moins, la suppression de l'inutile commentaires.
OriginalL'auteur ved prakash | 2013-02-22
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr, si j'ai bien compris votre question, il est très simple de faire cela. Voici une solution possible avec jquery:
comment obtenir formData valeur dans ActionSuport Classe. @aiwo99
si vous avez
param
interceptor, vous pouvez facilement définir des variables dans votre action de classe avec le nom de paramètre et de lecture, des poseurspeut-on avoir de réponse ? même moi, je suis confronté au même problème. J'ai déclaré les variables membres dans l'action de classe et le même nom de variables sont utilisés dans les champs de formulaire . Alors, quand une classe d'action méthode est appelée sur submit ( sans utiliser ajax ) la classe de l'action des variables de membre sera obtenir les valeurs. mais quand nous appelons l'action de l'ajax les membres obtiennent des valeurs null. Essayé d'envoyer un formulaire par sérialisation, sa ne fonctionne pas..
OriginalL'auteur Jaiwo99