日期:2014-05-19  浏览次数:20876 次

在strut中什么情况下使用动态FromBean(使用它又什么好处)?
我以前使用了大量的动态FromBean,但现在项目升级的时候,感觉它给我带了蛮多麻烦!

------解决方案--------------------
个人感觉很好
------解决方案--------------------

------解决方案--------------------
首先声明,我自认为对Struts已经比较熟悉,就没有去再看文档,凭自己的使用经验写啦。如有不对之处,请多指教。呵呵。 

DynaActionForm的优势在于: 
1、可以省写一些类(但你得多写配置) 
2、当ActionForm的结构有变时,你只需要改配置文件,而不需要改Java源代码,换言之,不需要重新编译(但一般不会变) 

我不喜欢使用DynaActionForm。原因有二: 
1、没法重写validate()方法,只能通过验证器框架验证,或者在Action中去验证。 
2、影响性能。虽然其getString()可以直接返回String,但你的项目中的数据不可能都用String吧?因其get()返回Object,所以你必须做类型转换。另外,印象中DynaActionForm不支持基本数据类型,当你需要int、double等类型的值时,不得不进行装/拆箱的操作,何必? 

所以,除非有足够的理由,我不会使用DynaActionForm或其子类。 

建议楼主,不必怀疑自己!就实际创建一个ActionForm的实现类吧。 

用实体类的对象作为其成员,不需要多写多少代码,也不需要经常变化,使用起来还非常方便。 

以用户模块为例,你之前肯定已经建好一个实体类,假如叫 User 
则你的ActionForm可以这样写: 
public class UserForm extends ActionForm 

private User user = new User();//记得一定要初始化! 

//getter & setter 

//other methods 
}
------解决方案--------------------
学习
------解决方案--------------------
xuexi~~~~~~~~~~~~~~~
------解决方案--------------------
说得不好,帮顶!
------解决方案--------------------
呵 用STRUTS2 FORMBEAN就都不用写了。
------解决方案--------------------
我认为的随便说下,高手请指点!
我们先来分析一下传统的form与动态的区别,然后就可看出他们各自的应用特点和用途
传统的form :如果要改变表单的条目的数量,需要在jsp页面增加或减少条目,并且还要再次更改ActionForm的Java原文件,再次编译

动态的form :如果改变表单的条路数量,我们同样需要在jsp页面增加或减少条目,需要在struts的配置文件中进行设置,但是我们不再需要改变ActionForm类,不需要重新编译java原文件

如果我们抛去Logic逻辑层,DAO数据层不谈我们会发现这样给程序带来的更加方便的、更灵活的方式,这是一种类似Spring依赖注入的一种方式。

至于什么时候使用 动态form,什么时候使用普通的form这个还真不太好比喻,因为我更多发现的是 实现某种需求只能用某种方式,或者用某种方式才是最好的。