之前看了高手们关于po和vo的一些文章。
我用的是struts2。struts2是把actionform和action结合起来了。那么当hibernate处理完后生成一个结果集(这个是po吧),我在action中获得这个结果集,那么我必须把这个po转化成vo咯?那么是不是我的action就必须提供和po一样多的属性字段啊
具体这个po-->vo在struts2的action中是如何实现的?请高手在提点下。谢谢
[b]问题补充:[/b]
我的意思是struts没有actionform,他把原本actionform中的东西合并到action中去啦。
po到vo,许多帖子都是以struts1.x来说的。现在想问以struts2来说,要怎么实现po到vo的转化
忘了注释:
[code="java"]public String execute() throws Exception {
User poUser = null;
/** *****下面这块实现从poUser到VOUser转化****** */
user = new VOUser();
user.setFullname(poUser.getFirstName() + " " + poUser.getLastName());
user.setAge(poUser.getAge());
return SUCCESS;
}[/code]中的poUser 是来自数据库的查询:
[code="java"] public String execute() throws Exception {
User poUser = userDao.findById(......);//from hibernate
/** *****下面这块实现从poUser到VOUser转化****** */
user = new VOUser();
user.setFullname(poUser.getFirstName() + " " + poUser.getLastName());
user.setAge(poUser.getAge());
return SUCCESS;
}[/code]
[quote]struts2是把actionform和action结合起来了[/quote]
struts2怎么会有actionform!
你有一个Hibernate实体User:
[code="java"]public class User {
private Integer id;
private String firstName;
private String lastName;
private Integer age;[/code]
一个VOUser对象供View显示:
[code="java"]
public class VOUser {
private String fullname;
private int age;
public String getFullname() {
return fullname;
}
public void setFullname(String fullname) {
this.fullname = fullname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}[/code]你的Action操作如下:
[code="java"]public class HelloWorld extends ActionSupport {
private VOUser user;
public VOUser getUser() {
return user;
}
public String execute() throws Exception {
User poUser = null;
/** *****下面这块实现从poUser到VOUser转化****** */
user = new VOUser();
user.setFullname(poUser.getFirstName() + " " + poUser.getLastName());
user.setAge(poUser.getAge());
return SUCCESS;
}
}[/code]
在jsp中你用el访问如下:
[code="java"]VOUser:${ user.fullname }
VOUser:${ user.age }
[/code]所以并不需要在你的Action中放多个属性字段,只要一个你在JSP中显示用的VOUser就可以了!这个VOUser可以和一个实例(如User)对应, 也可以和多个实体对应, 只要用查到数据把VOUser填满就可以了!