日期:2014-05-17  浏览次数:20779 次

关于<s:iterator>取值的问题!!跪求解答~~~~

  刚发错区了!

最近又碰到一个取值的问题。

  首先是action代码:(重要的部分)
  private List<User> users;

public List<User> getUsers() {
return users;
}

public void setUsers(List<User> users) {
this.users = users;
}
  public String list() {
this.users = this.userManager.getUsers();
return "list";
}
   
  uerdao部分:(重要的部分)
  public List<User> getUser(int id) {

return (List<User>)this.hibernateTemplate.find("from com.zc.model.User u where u.id='"+id+"'" );

}

  取值部分:(重要的部分)
  <s:iterator value="users">
  <s:property value="age"/>
  </s:iterator>

 

  差不多就这些了!问题是,前台有select语句输出,但是不知道为什么age属性为0.而且其他string属性为空?
  (也不知道代码贴的全不全,各位如果要看什么代码可以告诉我!)


------解决方案--------------------
<s:iterator value="users" var="user">
<s:property value="#user.age"/>
</s:iterator>

------解决方案--------------------
取值部分:(重要的部分)
<s:iterator value="users" id="user">
<s:property value="age"/>
</s:iterator>
 加上id试试
------解决方案--------------------
迭代嘛。。2楼正解。。。
------解决方案--------------------
users是一个list对象,如果写<s:property value="age"/>这个肯定得不到了啊,
<s:iterator value="users" var="user">
<s:property value="#user.age"/>
</s:iterator>
就可以实现了
------解决方案--------------------
探讨
users是一个list对象,如果写<s:property value="age"/>这个肯定得不到了啊,
<s:iterator value="users" var="user">
<s:property value="#user.age"/>
</s:iterator>
就可以实现了

------解决方案--------------------
在页面DEBUG一下 看参数传递过来了没有 。如果过来了。。就是你取值的方法有问题。。
<s:iterator value="users" var="user">
<s:property value="#user.age"/>
</s:iterator>

------解决方案--------------------
在public String list()方法return之前加一句System.out.println("users:"+users.size());打印看看users的长度是不是大于0。
页面上用<s:iterator value="users">${age}</s:iterator>输出即可。
------解决方案--------------------
看看你的struts.xml result 的type 是不是 redirect 而不是dispatcher(默认的)
------解决方案--------------------
user对象本身就是null,可能是userdao的getUser方法this.hibernateTemplate.find就没查询出结果,在这里先打印下看看
------解决方案--------------------
有select语句也不一定结果是对的。也许select * from user where id='xxx' 在数据库中没查询出。话说这个id的在数据库中的类型到底是int还是varchar呢
------解决方案--------------------
Java code


public List<User> getUser(int id) {
        System.out.println("id is:"+id);
    List<User> list = new ArrayList<User>();
    list = (List<User>) this.hibernateTemplate
        .find("from com.zc.model.User u where u.id='" + id + "'");
    System.out.println("user.size:" + list.size());
    for (int i = 0; i < list.size(); i++) {
        System.out.println("user.age:"+list.get(i).getAge());
    }
    return list;

}