关于formbean的一点困扰

04-04-07 chage

看了一些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方法,郁闷