刚发错区了!
最近又碰到一个取值的问题。
首先是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>
就可以实现了
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
在页面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;}