我有这样一个想法,后台返回给前台都以json串形式的对象,不知道用struts2的标签如何与其整合在一起?不知谁有这方面的经验?

解决方案 »

  1.   

    导入 struts2-json-plugin 包
        <!-- 使用json一定要继承json-default-->  
        <package name="json" namespace="/json" extends="json-default">  
            <action name="jsontest" class="test.json.LoginAction">  
                <result type="json"><!-- 返回类型为json,这样会自动转化为json字符串 -->  
                <param name="root">jsonObj</param><!--jsonObj为test.json.LoginAction下的对象,get/set方法 -->  
                </result>  
            </action>  
        </package>
      

  2.   

    ajax的话,后台方法都用void,也就是不用返回,然后write.println("json字符串"),在前台用AJAX获取字符串
      

  3.   

    整合步骤:1>.使用jar包:
       struts2-json-plugin-x.x.x.jar
    2>.struts.xml配置:
       1/.package继承json-default包。
       2/.action请求结果类型为json。
      

  4.   

    嗯,非常感楼上提供思路。
    后台的搭建基本上是可以理解了,现在我想知道前台的struts2的标签该如何引用结果集?
      

  5.   

    即前台向后台要传JSON后台返回前台也要是JSON.
      

  6.   

    嗯,感谢楼上提供思路,后台这块可以理解了。我想具体了解一下,前台struts标签提交时如何组织成JSON,后台返回的结果集为JSON前台是如何解析的?
      

  7.   

    1.导入json包
    2.struts.xml配置文件中
    <package name="common" extends="struts-default,json-default">
        <action name="" class="" method="{1}">
            <result type="json" name="json"></result>
        </action>
    </package>
      

  8.   

    后台整合LZ已经会了,前台可以有很多实现方法。前台我是结合prototype.js实现的1.标记事件
    <s:a href="javascript:doJoson();">json执行</s:a>2.js代码
    <script type="text/javascript">
    function doJoson () {
    var url = "请求名.action";
    var options = {method:"post",onComplete:doComplete,asynchronous:true};
    new Ajax.Request(url, options);
        }    function doComplete (request) {
            var result = eval("(" + request.responseText + ")");
    alert(result.name);
        }
    </script>注:alert(result.name)中name是Action对应的属性,有get/set方法。
      

  9.   

    前台可以使用jquery来实现function getUserList() {
    $("#result").html("");
    $.ajax({
             url:'json/returnList.action', 
             type:'post',
             dataType:'json', 
             success:function(data){ 
               $.each(data.userList,function(i,value){   
              $("#result").append("第"+(i+1)+"个用户")
                          .append("编号:"+value.id+"")
                              .append("用户名:"+value.name+"")
                              .append("密码:"+value.password+"")
                              .append("<br/>");
                              ;
               });
             }
          });
        }data里装的多个person对象,person哟id,name和password
      

  10.   

    如果前台用了Ext就可以不用Struts2标签了、前台用Ext显示就Ok了。
    但是如果Struts.xml写成这样的话:
    <package name="extjs" namespace="/" extends="json-default">
         <action name="login" class="ActionName">
            <result type="json"></result>
          </action>
    </package> 就需要加入struts2-json-plugin-2.1.81.jar这样可以实现功能但是struts.xml配置就和平时用的不一样了看起来有点不爽了
    用json-lib.jar可以实现Ext和Struts2的整合用这中方法struts.xml是可以不用继承json-default的
    两种方法都可以实现了就看个人想用那种了···