鸡肋---Struts form 的改造-----------delegate methods

来源:互联网 发布:淘宝昵称修改失败 编辑:程序博客网 时间:2024/05/16 05:25

鸡肋---Struts form 的改造

  鸡肋是对Struts form的形象表达。

Struts FormStruts的一个不完美的地方,虽然在struts的体系中,form看起来没有什么大问题。可到我们的应用之中,form就显得不是那么必要了。struts form做的工作不彻底------虽然他无法作得彻底。

数据从jsp/html过来的,struts使用reflection填充struts form,这个过程是要消耗资源,然后从form再复制到Entity Object中,这个过程也要消耗资源。就以上两步来说,其实可以合并为一步,2步有点浪费。

解决方式有两种:

第一就是使用delegate方式,在form中持有一个entity Object(注意要初始化),并使formentity的属性进行delegate,并提供entity Objectgetter/setter

 例如:

  public class Person {

    private String name

    //names   getter and setter

}

  public class PersonForm extends ActionForm{

//这个一定要有

//还必须有一个getter

      private Person person = new Person();    

     public void setNameString name{

          personsetNamename);

     } 

     public String getName(){

          return persongetName();

     }

 

public Person getPerson(){

   return thisperson

}

}

 

第二种方式,进行自定义的参数处理。这个方式比较复杂,要很多地方进行配合,比如要使用自定义的Struts PlugIn以及采用Template Method action进行改造,使用reflection进行赋值,解析xml配置文档。这种方式带来的益处是带来更多的便利。如果增加一个html/jsp form 字段,只要把配置配置文件增加一个对应字段就ok

如果Entity class 修改,那么也只要修改配置文件。这对我们来说可太省力了。不过,需要特别说明一下,这个方案适合很多web application

原创粉丝点击