看一个东西是什么层次,就必须想想这个东西是怎么来的,为什么会有这个东西。

那ActionForm来看,为什么struts设计的时候会有这么个玩意儿?其实目的很简单,两个目的(其实是一个目的),第一,将你提交的数据自动转换成一个类,第二,将执行完业务逻辑的结果数据自动映射到你的jsp中。所以ActionForm目的是为了和jsp中的哪些标签做一个自动匹配的玩意。那结论就简单了,既然jsp是属于View的,那么ActionForm自然也是属于View的,因为如果你改变了jsp(当然不是修改简单的文本什么的),那么你的ActionForm也需要跟着改变。

在从另外一个角度来看,什么是Model,那是业务模型,什么情况下业务模型会变,当然是业务变化的时候,模型才会变化,模型怎么可能随着jsp的变化而变化呢。

那么为什么会有人会觉得ActionForm是Model呢,因为这样可以减少一个从Model到ActionForm的转换啊。但是假如现在我们要增加一个非浏览器的Client,同样使用这个业务逻辑,怎么办,也让这个Client使用ActionForm?

不必保证领域实体和formBean是两个类,只要保证它们是两个对象即可。在领域实体和form一致的时候可以不必要再做一个formBean类,只要生成一个formBean对象即可。当然在不一致的时候formBean类还是有价值的。