鸡肋---Struts form 的改造
鸡肋是对Struts form的形象表达。
Struts Form是Struts的一个不完美的地方,虽然在struts的体系中,form看起来没有什么大问题。可到我们的应用之中,form就显得不是那么必要了。struts form做的工作不彻底------虽然他无法作得彻底。
数据从jsp/html过来的,struts使用reflection填充struts form,这个过程是要消耗资源,然后从form再复制到Entity Object中,这个过程也要消耗资源。就以上两步来说,其实可以合并为一步,2步有点浪费。
解决方式有两种:
第一就是使用delegate方式,在form中持有一个entity Object(注意要初始化),并使form对entity的属性进行delegate,并提供entity Object的getter/setter。
例如:
public class Person {
private String name;
//name‘s getter and setter
}
public class PersonForm extends ActionForm{
//这个一定要有
//还必须有一个getter
private Person person = new Person();
public void setName(String name){
person。setName(name);
}
public String getName(){
return person。getName();
}
public Person getPerson(){
return this。person;
}
}
第二种方式,进行自定义的参数处理。这个方式比较复杂,要很多地方进行配合,比如要使用自定义的Struts PlugIn以及采用Template Method 对action进行改造,使用reflection进行赋值,解析xml配置文档。这种方式带来的益处是带来更多的便利。如果增加一个html/jsp form 字段,只要把配置配置文件增加一个对应字段就ok。
如果Entity class 修改,那么也只要修改配置文件。这对我们来说可太省力了。不过,需要特别说明一下,这个方案适合很多web application。