今天看了Spring里的一个sample, 把vo做为actionform的一个属性,可以有更简单的方法如下(User的例子) :
User 有 username, password两个属性。
public class User{
private String username;
private String password;
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
}
ActionUserForm 有 User 和 actionType两个属性。
public class ActionUserForm {
private User user = new User();
private int actionType ;
public User getUsername() { return user; }
public void setUsername(User user) { this.user = user; }
public int getPassword() { return actionType; }
public void setPassword(int actionType) { this.actionType = actionType; }
}
struts-config.xml中的bean和actio配置这里就不讲了,要说明的是private User user = new User();第一次我是private User user;这样定义的始终成功不了。换成private User user = new User();就ok了。
UserEdit.jsp
...
<html:text property="user.username" />
<html:password property="user.password" />
...
UserAction.java
public ActionForward save(...
...
UserForm userform = (UserForm)actionForm;
bs.save( userform.getUser() );
...
这样不仅是内存中的数据对象少了,对于复杂的数据对象,我们编程也变得更简洁了。PO是通过hibernate同步器产生的,从头到尾真正的数据对象就是PO, formbean是PO加上其他的控制状态什么的。这样就非常方便了