我用的是jquery的form插件,我现在想从struts2中返回一个list到页面,然后用ajax的方式接受但是我不知道为什么接受不到这是struts.xml 配置文件
<action name="findUsers" class="com.yin.action.UserAction" method="findUsers">
<result name="success">/login.jsp</result>
<result name="ERROR">/fail.jsp</result>
action中的代码
public String findUsers(){
list=userService.findAllRoleByHql();
System.out.println(list.size());
return SUCCESS;
}
页面代码
<script type="text/javascript">
function saveadd() {
var options = {
url : 'findUsers.action',
success : callback,
type : 'post',
dataType : 'json',
clearForm : true
};
$('#addform').ajaxSubmit(options);
} function callback(mes) {
alert(mes);
}
</script>高手指教

解决方案 »

  1.   

    要么将List转换成JSON,然后接受;
    不能直接接受一个集合的.
      

  2.   

    传回来??action 返回,看你用神马方式了。直接JAVA 的list是收不到的。要么直接out 拼成 string.要么用json
      

  3.   

    struts2中有对应的插件,你只要把那个jar包加到项目中间去就可以了。代码大概这样:
    action:
        定义一个返回集合 list result;
        执行方法为result赋值struts.xml:
        让package继承自json-default
        。。处理页面上直接接收了可以了。可以去网上找个demo
      

  4.   

    // ajax  与服务器进行交互
    function validatorloginName(queryDate) {
    $.ajax( {
    type : "POST",
    url : "product.do?oper=getData&&qr=" + queryDate,
    success : function(data) {
    dates(data);
    }
    });
    }
    ACTION
    //你要将需要的信息写入到输出流里面
     PrintWriter pw = response.getWriter();
     pw.print(date);  //这里面不能写入LIST类型的  有些什么类型你自己看下参数就可以了。
      

  5.   

    我想问下是不是这个jar包struts2-json-plugin-2.1.8.1.jar
      

  6.   

    不是  楼主是想用jquery跟后台交互  要用到jquery的的jar 
      

  7.   

    action中return json对象,然后到jsp页面回调函数就可以取了
      

  8.   

    我不知道怎么回事回调函数没有被调用 <action name="userLogin" class="com.yin.action.UserAction" method="userLogin">
    <result type="json">   
           </result>
    </action><script type="text/javascript">
    function saveadd() {
    var options = {
    url : 'findUsers.action',
    success : callback,
    type : 'post',
    dataType : 'json',
    clearForm : true
    };
    $('#addform').ajaxSubmit(options);
    } function callback(mes) {
    alert("dsf");
    }
    不知道为什么回调函数就是没有被调用
    高手快来帮忙解决</script>
      

  9.   


    上面那个struts.xml错了,是这个<action name="findUsers" class="com.yin.action.UserAction" method="findUsers">
    <result type="json">   
           </result>
    </action>
      

  10.   

     lz 是我做的例子,看看,data就是个json,怎样取数据,例子也有,可看看,希望对你有帮助!  var menuArr = new Array();
      $.ajax({
               type:"post",
               url:"/Babyfirst/cms/articleTypeAction!getChildArticleType.action",
               data:"pid="+pid,
               dataType:"json",
               success:function(data){
                   for(var i = 0;i < data.length;i++){
                    menuArr[i] = [data[i].typeName,data[i].id];
                   }
                    //改变下拉
                    menuChange(nameStr, pid, len);
                 }
               }
           
              );
      

  11.   


    用ajaxanywhere了。可以返回所有的对象。跟平常用的struts的没有什么区别。哈哈
      

  12.   

    可以用DWR,传LIST都不是问题,一般DWR+AJAX比较快捷
      

  13.   


    写错了,一般用DWR+JQUERY相结合的方式比较快捷,处理ajax还是DWR强悍
      

  14.   

     String str1 = request.getParameter("param"); 
            StringBuffer sb = new StringBuffer(str1); 
            sb.append("+123"); 
            String responseText = sb.toString();         // 回传处理的结果,到之前页面 
            response.getWriter().println(responseText);          <------- 用这种方式将值 传回给页面
      

  15.   

    知道ajax,但是加上jquery就搞不清楚了!
      

  16.   

    List是后端java里的集合,前端页面只认识json,xml,文本写一个JsonUtil把你的List转成前台认识的json类型
      

  17.   

    第一需要将List转换成json类型在java里就是String类型
    由ajax接收jsonAjax样式是
    $.ajax({
       type: "POST",//请求格式 post 或 get
       url: "some.do",//请求的action
       dataType :"json",//设置返回类型为json格式
       data: "name=John&location=Boston",//向后台传递的数据
       success: function(msg){//如果返回成功 这调用success函数 否则调用 error 函数
         alert( "Data Saved: " + msg );
       }
    }); 
      

  18.   

    将任意格式转换为JSON数据格式的工具类 感觉这个版本被我改的有些问题 下次更新回来  呵呵
      

  19.   

    也可以添加JsonUtil的jar包进行类型转换
      

  20.   


    楼主注意 result 必须有name属性<action name="findUsers" class="com.yin.action.UserAction" method="findUsers">
        <result name="success" type="json">   
           </result>
    </action>
     public String findUsers()
    {
      return "success";//如果继承了ActionSupport 可以写:return SUCCESS;
    }
    我刚才试了下,可以接收到。不过我没用list。等我用list看看啥效果。
      

  21.   

    我试验了下list里面放字符串的,是可以的(放置对象需要再测试下):
    贴下代码吧。
    xml: <package name="json" namespace="/json" extends="json-default"> 
    <action name="getdata" class="com.test.struts2.JsonAction"> 
    <result name="success" type="json"></result> 
    </action>
    </package>
    java:package com.test.struts2;import java.util.ArrayList;
    import java.util.List;public class JsonAction {
    private String a;
    private List<String> list;

    public String getA() {
    return a;
    } public void setA(String a) {
    this.a = a;
    } public List<String> getList() {
    return list;
    } public void setList(List<String> list) {
    this.list = list;
    } public String execute()
    {
    list = new ArrayList<String>();
    list.add("Hello");
    list.add("world");
    return "success";
    }}jsp:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 
    <%@ taglib prefix="s" uri="/struts-tags" %> 
    <html> 
    <head> 
    <title>json页面</title>
    <script type="text/javascript" src="js/jquery-1.5.2.min.js"></script>
    <script type="text/javascript">
    $(function(){
    $("#test").bind('click',function()
    {
      //alert($("#a").val());
      $.ajax({
         type: "POST",
         url: "json/getdata.action",
         data: "a="+$("#a").val(),
         success: function(msg){
          for(name in msg)
          alert(name+":"+msg[name]);
         },
         error:function(err){
            alert("调用ajax时发生错误!");
         }
      });
    });
    });
    </script> 
    </head> 
    <body> 
      <s:textfield name="a" label="字符串"></s:textfield>
      <button id="test">测试</button>
    </body> 
    </html> 
    结果:list:Hello,world