楼主 必须 out.print(list);
而且必须将函数改成public void list() 

解决方案 »

  1.   


    这是struts。不能像你说的那样该的吧?
    <package name="admin" extends="json-default" namespace="/admin">
    <action name="userAction" class="com.ssh.action.admin.UserAction">
    <result name="list" type="json"/>
    </action>
            </package>
      

  2.   


    嗯,有值的那个是我在后台system.out.println();得到的。那个null值的就前台网页的结果。
      

  3.   

    一开始我以为我是已经解决问题了,后来才发现还是没有解决,郁闷了两天后,在今天21:55这个时刻,突然间被我发现了问题所在,虽然已经解决但是任然有所疑惑,我先说我的解决办法,请各位高手能解答我的疑惑,谢谢!
    之所以出现在后头SYSTEM.OUT.PRINTLN(jsonString )数据正确,但是前提的JSON结果却是NULL,原因在于,我的ACTION使用的是Model-Driven ,也就是:
    public class UserAction extends ActionSupport implements ModelDriven<UserActionDAO>{}我的解决办法是不使用Model-Driven,改为使用Field-Driven之后,问题就解决了。后头打印没有问题,前提获得的JSON结果也没有问题了。我之所以发现这个问题是用了排查法不断的测试得出的结果,所以还是很希望知道原因,并且如果使用Model-Driven,该怎么处理。所以,我不明白为什么使用Model-Driven会出现NULL的结果,哪位高手要是知道,还望不吝赐教哈~
      

  4.   

    时间22:35,这个问题终于彻底的解决。其实不关ModelDriven的事。
    原因在于我原先写成private UserActionDAO uad = new UserActionDAO() ;关键是这个地方不能先new。
    而后改成:private UserActionDAO uad;
    这样问题就能彻底解决了,我的action还是照样使用ModelDriven下面公布一下我的list的写法。 public String list() {
    users = us.allList();
    totalProperty = users.size();
    root = new ArrayList<UserActionDAO>();

    for(int i=0; i<users.size(); i++){
    uad = new UserActionDAO();
    uad.setId(users.get(i).getId());
    uad.setUsername(users.get(i).getUsername());
    uad.setPassword(users.get(i).getPassword());
    uad.setPassword2(users.get(i).getPassword());

    root.add(uad);
    } JSONArray jsonArray = JSONArray.fromObject(root);
    this.jsonString = "{totalCount:"+this.getTotalProperty()+",results:"+jsonArray.toString()+"}";
    System.out.println(jsonString);
    return "list";
    }
      

  5.   

    请问怎么看前天 json的值呢遇到你同样的问题了。。