但是他们有共同的属性,难道非要建两个相同的ActionForm,只是不同的验证而已?

解决方案 »

  1.   

    难道你添加和修改用一个action就可以了??既然有creatAction和updateAction,配置文件不也就有两个action需要配置,两个action不就可以写不同的input路径了。dispatchaction只是把一些action放到一个action里面了,原理跟普通action是一样的。你的普通action可以做到的,dispatchaction也可以做到。
      

  2.   

    添加和修改我可以写到一个Action中,但验证的返回页面却无法做选择
      

  3.   

    to:rickhunterchen(千山鸟飞绝) 
    就算是我写两个Action吧,但我想用一个ActionForm验证,验证失败分别返回不同的页面
    我该怎么设置input?
      

  4.   

    很简单,不用配置xml文件,,
    在action中使用这句代码就行了。return mapping.getInputForward();使用这句代码就可以解决楼主的问题 了,分别返回相应的页面了。
    。。
      

  5.   

    to:J_NeedForSpeed(旧欢如梦) 不是啊,这时候还没有执行Action,我是说ActionForm的返回问题
      

  6.   

    这个问题我不会,不过楼主的设计思想肯定有错误,,,dispatchaction不是公共类·!!!!!!!!!!!!!!!!!
      

  7.   

    你设计有问题,  应该把一个页面做一个Action, 而不是一个模块做一个Action.例如一个页面可能包含增删改功能.
    另一个页面是列表查询.
    那么应该做两个Action , 即使物理上是一个Action.java.  也应该配置两个Action
      

  8.   

    真受不了,难道就没人真正理解DispatchAction?
      

  9.   

    一个模块就是一个ACTION。。public class 用户Action extends DispatchAction { public ActionForward to用户注册方法(ActionMapping mapping,
    ActionForm form, HttpServletRequest request,
    HttpServletResponse response)  {
     
              reture 注册;
             } public ActionForward to用户修改资料方法(ActionMapping mapping,
    ActionForm form, HttpServletRequest request,
    HttpServletResponse response)  {
     
              reture 修改资料页面;
             }
    }
      

  10.   

    public class 用户Action extends DispatchAction {
    自定义验证方法,不使用框架默认的验证方法
       boolean     验证注册(form)
    {}
       boolean     验证修改(form)
    {} public ActionForward to用户注册方法(ActionMapping mapping,
    ActionForm form, HttpServletRequest request,
    HttpServletResponse response)  {
                               实例化form
                            String forward="";
                          if(验证注册(form))
                          {forward=正常页面}                  
                          else
                          {forward= 错误页面}
                        return forward;
             } 修改方法同上
      

  11.   

    这个时候不是靠input来确定返回哪个页面,而是靠success或者failure来确定返回的页面的另外我个人比较喜欢很多method写在一个action中。
      

  12.   

    to:QQB87578033
    我指的是ActionForm验证的返回,不是在Action中或bean中验证
      

  13.   

    to:zhkchi(火焰神) 
    ActionForm中不能用success或failure吧?
    或者是我不会
    请指教
      

  14.   

    lz说的是ActionForm里的validate方法吧,验证没有必要一定要放在form中,也可以放在action里或是页面用js校验
      

  15.   

    是啊
    以前就是写在action里,现在想试试用validate方法验证
    这样至少有个好处,通不过验证返回页面时,至可以保留用户输入的信息
      

  16.   

    rickhunterchen给出的实际上已经是合适的解决方案,只是没有给出实际编码不好理解。
    意思就是你的XXXDispatchAction的class实例只有一个,例如com.xyh.emp.EmployeeAction,
    但是在struts-config.xml的ActionMappings里面可以映射为多个<action>标记,例如:<action
       path="/regEmployee"
       input="/registerEmployee.jsp"
       
       parameter="method"
       name="employeeForm"
       attribute="employeeForm"
       scope="request"
       validate="true"
       type="com.xyh.emp.EmployeeDispatchAction">
       
       <forward name="detail" path="/detailEmployeeInfo.jsp" />
    </action><action
       path="/editEmployee"
       input="/editEmployee.jsp"
       
       parameter="method"
       name="employeeForm"
       attribute="employeeForm"
       scope="request"
       validate="true"
       type="com.xyh.emp.EmployeeDispatchAction">
       
       <forward name="detail" path="/detailEmployeeInfo.jsp" />
    </action>那么在JSP里面就可以这么分别描述表单标签。
    ·<html:form action="registerEmployee.do"/>
    ·<html:form action="editEmployee.do"/>这样你不仅能为不同的行为指定不同的“action”,
    自然就可以使用不同的input页,
    分别指定validate是true或者false,
    甚至可以使用不同的ActionForm。说白了就是DispatchAction的类实例只有一个,
    但是可以通过不同的path映射为不同的“行为”,
    这不是Struts的缺点,反而正好是它的优点。:)
      

  17.   

    Validator框架对ActionFrom进行验证的时候有两种识别FormBean的方式,
    一种是使用BeanName,就是action标签里面的name="employeeForm",
    另一种是使用path,就是action标签里面的path="/regEmployee",
    那么在使用了DispatchAction的情况下,如果使用Validator进行验证的话,
    你的XXXXForm只需要继承ValidatorActionForm或DynaValidatorActionForm,
    然后在validation.xml文件里面form标签里面的name属性使用该映射action的path就可以了。
      

  18.   

    to:wingtrace(虽然生活很艰苦,但是我们也不能做禽兽) 
    十分感谢,调试已经通过啦:)
    结贴