当我们 使用DispatchAction 减少了一些部分相同的逻辑代码的时候,
就的用同一个ActionForm  (name属性),这样我们就得把ActionForm弄得很很庞大(字段比较多的时候),
动态表单也是一样,属性得加。如果 不在乎庞大,那么验证层就有一个问题:
比如一个简单的列子用户注册:email不能为空,空测return
可是你登陆的时候并不要求email,而登陆的时候email是空的,也return ,这并不是我们想要的。需要我们编程判断,
假如用的是普通的ActionForm,还可以通过编程实现上面的问题,
假如是动态的就麻烦点了 。
当使用DispatchAction ,大家是如何设计的ActionForm的?

解决方案 »

  1.   

    那你就在action各自里的方法里验证,用Actionmessages封装不久好了吗?
      

  2.   

    注册和登陆是不同的,应该采用不同的ActionForm来做。利用DispatchAction 可以针对一个actionForm来实现添加、修改、 删除、更新以及查找等。内容不同的应该需要不同的ActionForm来实现。
      

  3.   

    DispatchAction 的好处就是减少了一些部分相同的逻辑代码。你在DispatchAction 中定义
    两个方法譬如doReg和doLogin然后可以用不同的代码实现,在注册表单中你放一个隐藏字段
    <html:hidden property="参数名" value="doReg">然后再struts配置文件中在这个action中配一个
    参数parameter="参数名"就好啦。(注意property中的参数名要和parameter中的一样)
      

  4.   

    那你就在action各自里的方法里验证,用Actionmessages封装不久好了吗?业务验证才放到action验证
      

  5.   

    这种情况谁让你用DispatchAction了, 应该用MappingDispatchAction
    针对不同的方法, 配置不同的Form