关于formbean的一点困扰

chage 04-04-07

看了一些struts的文章,也着手实现了一些小的应用,正如指导手册所说,
formbean是视图的一部分,是用来自动收集表单上的数据,并作简单的表示层验证的。
比如说,实体bean---Person,有一些属性,对应着一个工厂类,如PersonFactory或PersonService,负责与数据库打交道。比如查询方法 public static Person findPerson(long pid);

那么formbean还得把这一堆简单属性及其读写方法重新写一遍,这样感觉比较地郁闷。
有的时候,得先查到一个Person对象,再将其clone(这个词不恰当)为一个PersonFormBean
用来在页面上显示(如修改记录的时候)。

可能表述得不是很清楚。我想问的是:
1.这种情况下,如果直接让工厂类产生formbean对象,即,让Formbean担任实体bean的作用,是
不是打破了MVC的概念。得不偿失呢?
2.可否让Formbean中组合进一个Person成员,而避免写一堆get set 方法呢?这样会不会对页面
上的使用造成困难呢?如:
public PersonForm extends ActionForm {
//将实体bean作为一个成员
private Person person;
public Person getPerson(){
return person;
}

public void setPerson(Person person){
this.person = person;
}
}

happycpa
2004-04-10 10:43

是呀,我也碰到了这个问题,在action中要UserBean.setName(form.get("Name"));
有没有什么能映射一下,通过配置文件就能解决呀?毕竟这是每个action中要做的相同动作。

豺狼笑
2004-04-12 15:49

apache common BeanUtils可以做到哈

tbase
2004-04-14 22:19


1 jsp:
<html:form action="/testAction.do">
<html:text name=
"testActionForm" property="emp.name" size="30"/>
</html:form>

2 ActionForm.java:
private Person emp;

3 Person.java :
public class Person {

private String name = null;
private int age = 0;
private String address = null;
public String getAddress() {
return address;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setAddress(String address) {
this.address = address;
}


}


zyyyl
2007-01-17 16:33

我也是这么做的,可是提示没有getter方法,郁闷