发新话题
打印

如何让所有的Action只共享一个actionFrom

如何让所有的Action只共享一个actionFrom

如何让所有的Action只共享一个actionFrom,也就是说我只要创建一个actionFrom,让所有的action都用此actionFrom。  
我在开发过程中发现,如果一个前台JSP新增了一个字段,那么就要在actionFrom里面新增些字段的seter和geter方法。  
我现在想如果actionFrom的seter和geter方法都用一个,在调用时,把调用的值压到HashMap里面去。请问哪位高手有做过这样的actionFrom,前台的属性设置是如何,actionFrom又是如何写,还是action是如何取到值的。

TOP

提供一种方法  :  
jsp中如:  
     <html:text  property="data(name)"  />  
     <html:text  property="data(password)"  />  

actionform  中  
     public  DataForm  extends  ActionForm  {  
           Map  data  =  new  HashMap();  

           public  void  setData(Map  data)  {this.data  =  data;  }  
           public  Map  getData()  {return  this.data;  }  

           public  Object  getVal(String  key)  {  
                   return  data.get(key);  
           }  
     }   

action中  
       public  testAction  extends  Action  {  
               public  ActionForward  execute(....)  {  
                       String  name            =  (String)((DataForm)form).get("name");  
                       String  password    =  (String)((DataForm)form).get("password");  

                       ....  
               }  
       }

TOP

不知道你这样做是否有待欠缺~  

Form是映射jsp的,如果在Form用Map来通用页面参数的话!  
过多的页面和参数将为你带来不堪重负,使程序变得阅读困难。  
也许你现在没有发现,但当请求过多的时候,你就会发现。  

如果你仅仅是嫌Form里面的getset方法繁琐的话,可以申明个Bean!  
在form页面生成这个bean的getset方法。  

页面应用的的时候就beanName.beanProperty。  

更重要的一点是,页面显示和form,bean生成的字段都是对应数据库的。  
极少数情况下,或者你有别的用途。  

这样增加字段只是对应数据库表的字段,而数据库的表结构应该是已经设计好的。  
也就是说是固定的,那么声明这个实体Bean对应数据库的表字段不就行了么。  

多的也就不说了,多参看一些这方面的例子,看看。  
我想,对于你遇到的问题可能已经有了解决的方法。  
不要过于冥思苦想!学会接受,相信你会有更大的收获。

TOP

发新话题