Action:
XBean bean;
public void setBean(bean) { this.bean = bean; }
public XBean getBean() { return bean; }jsp中form里<s:textfield name="bean.property"/>的值提交后能正常赋到action中
但是用jquery提交在action中取到的却都是null,不知道什么原因呀=_=Javascript:
var data = {};
data["bean.property"] = $("input[name='bean.property']").val();
$.post("MyAction.action", data, function(m) { alert(m) });愁了好久,希望高手给下指点!

解决方案 »

  1.   

    var data = {};
    data["bean.property"] = $("input[name='bean.property']").val();
    $.post("MyAction.action", data, function(m) { alert(m) });首先:你确定data中已经有值了?在浏览器中跟踪下js看看。其次:可能是你的data的值没有赋进去,试试:
    $.post("MyAction.action", {key:"value"}, function(m) { alert(m) });
      

  2.   

    大哥,你这样不行啊 ,$.post("MyAction.action", data, function(m) { alert(m) });此处参数是key/value类型,你传入的是数组
      

  3.   

    你可以先取得这个表单 ,然后调用有个叫serialize()这个函数 就可以了
      

  4.   


    for (var key in data) {
      alert(key + " -> " + data[key]);
    }
    所有的值都可以输出的,而且在action的request中都是可以获取到对应的值,就是不能给bean中的属性赋值!
    qqzhuyuehe不妨试一下,可能跟struts有关系
      

  5.   

    由于提交信息都是脚本动态生成,提交的bean也不是固定的,所以我没有用表单,可以说是模拟表单提交吧,不方便用表单序列化
    我传的参数没问题哦,是object类型呢
      

  6.   

    不知道大家有没有明白,再详细描述一下:
    我的Action中有个bean叫x,有对应的setX/getX方法,使用struts标签<s:textfield>可以通过name给bean的所有属性正常赋值;
    但是用jquery的post方法模拟表单提交却只能给Action中直接定义的基本类型变量赋值而不能给bean中的变量赋值.
    不知道这样描述明白不?继续等待解答!
      

  7.   

    听说Ajax好多的问题都出在配置上,lz考虑一下。
      

  8.   

    你STRUTS.XML文件是怎么配置的啊 是不是架包或者配置问题撒
      

  9.   

    诸位可以试一下啊..在配置完全没有问题的情况下也是没法给Bean赋值的呐!我换种方法解决了,既然发送数据模拟了,那么获取数据也用模拟的⊙﹏⊙b没时间等啦,结贴了XBean xBean = new XBean();
    Enumeration rnames = request.getParameterNames();
    for (Enumeration e = rnames; e.hasMoreElements();) {
    String thisName = e.nextElement().toString();
    String thisValue = request.getParameter(thisName);
    if (thisName.startsWith("xBean")) {
    String param = thisName.split("\\.", -1)[1];
    if ("xId".equals(param)) {
    xBean.setXId(Long.parseLong(thisValue));
    } else if ("xName".equals(param)) {
    xBean.setXName(thisValue);
    } else if ("bId".equals(param)) {
    xnBean.setBId(Long.parseLong(thisValue));
    } else if ("nId".equals(param)) {
    xBean.setNId(thisValue);
    } else if ("xRange".equals(param)) {
    xBean.setXRange(thisValue);
    }
    }
    }
      

  10.   

    今天忽然发现是因为没有给Action里面的相应Bean写get方法..
    由此联想到struts2给bean属性赋值的原理应该是:
    如果Action中没有对应的get方法它就new一个Bean如果有的话就get存在的Bean并给它的属性赋值
      

  11.   

    楼主问你个问题 为什么我var data = {};
    data["bean.property"] = $("input[name='bean.property']").val();这样做,在用alert看data["bean.property"]这个的值是多少的时候显示的是undefined呢? 望答复 谢谢你。我也纠结了好久了