用struts2整合spring3.0,结果用json和jQuery做的ajax表单验证就用不了了,把spring和struts2分开,ajax还是用不了。结果把spring3.0去掉,ajax就能用了。唉,这问题太奇怪了。
在用spring3.0的时候,ajax表单验证时,控制台的报错信息如下:2009-12-10 15:18:47 com.googlecode.jsonplugin.JSONWriter map
警告: JavaScript doesn't support non-String keys, using toString() on java.lang.Integer有没有哪位大虾也碰到类似的情况啊?

解决方案 »

  1.   

    对了,json插件为 jsonplugin-0.34.jar
      

  2.   

    是吗? 没有这样试过,如果确实有冲突,截个图,说明下,发给 spring sider 反应。
      

  3.   

    应该不会冲突吧,spring跟json应该也没有多大的相互影响。我就在用,版本为:json-lib-2.3JavaScript doesn't support non-String keys, using toString() on java.lang.Integer 
    好像是说要你把key弄成String类型的。而且也只是个警告,我怀疑是你返回的json格式不正确。
    我用jqueryValidate来异步验证时没有问题的。
      

  4.   


    你用json的版本为:json-lib-2.3?但是我用的是一个jsonplugin-0.34.jar啊 是一个json插件,然后配合jQuery来实现简单的ajax对表单字段的验证,您能给我个您现在使用json来实现异步验证的例子吗?我新手,很多都弄不明白。
      

  5.   

    我的json返回格式是在struts2中定义的,配置文件如下:    <package name="ajax-test" extends="json-default" >
            <action name="equipmentMainActionAjax"  class="com.i3lab.equipmgr.action.EquipmentMainAjaxAction">
                <result type="json" name="ajaxSuccess"></result>
            </action>
    </package> 
      

  6.   

    public String checkSerialNumber() {

    equipment = (Equipment)SpringUtil.getBean("equipment");

    if (equipment.isSerialNumberExist(serialNumber)) {
    result = "此编号已经存在!";
    } else {

    result = "编号可用。";
    }
    return "ajaxSuccess";
    }这是定义在struts2 action的对ajax事件处理的方法。代码“equipment = (Equipment)SpringUtil.getBean("equipment");”使用了spring3.0的api。现在的问题就是如果把这句代码注释掉,那么一切工作正常。如果不注释掉,那么前台的ajax请求能调用这个方法,但是不能正确的返回,同时会抛出警告:2009-12-10 15:18:47 com.googlecode.jsonplugin.JSONWriter map
    警告: JavaScript doesn't support non-String keys, using toString() on java.lang.Integer 
      

  7.   

    json的插件没有用过。我用的是那个jar包。如果你需要例子,建议去看下jquery validater.很不错的一个jquery验证框架。