可在Action里设置不同的action参数,另在struts-config.xml 加上 parameter="action"

解决方案 »

  1.   

    如果你已经深刻地理解了struts的体系,只存在一个Action实例也是没有问题的,可以把调用具体的商业bean的方法放在formbean里去。详细点说吧:
       action是唯一的,不过在struts-config.xml里对映的formbean是不一样的。假如有一个动作为登录(logon),formbean 为 com.xxx.struts.LogonForm,
    而LogonForm中除具有相关属性及set/get方法外,还是付担一部分控制流向的作用。如
      public class LogonForm extends ActionForm{
         private String username;
         private String password;
         ...
         public String logon(){
           //调用一个另外的bean来验证这个用户名和口令是否合法
          if (UserFactory.logon(username,password)!=null){
            return "success";
          } else {
            return "failure";
          }      }
    }上面的success 和 failure 是定义在配置文件该action中的forward.
      

  2.   

    继续上面所述。
    这时,在页面上的登录这个按钮对应的url就应该是:
    action = "logon",是和formbean中的这个方法名称一模一样的,当然区分大小写。这样的话,你可以在那个唯一的action中利用反射来自动调用该方法。解析完后利用返回的字符串来导向下一个视图。
        这一个解决方法可以有效地减少action的数量,很多人看来,这样一来打破了struts的MVC体系,formbean承担了较重的视图层、控制层的责任,不过,我经过深度思考,认为它适合于小型项目的实施,从设计上讲formbean的方法利用到自身的属性,自身是高度内聚的,从重用角度来说,只有商业bean这一块是最有价值的部分,Action和formbean重用的可行性不大。
      它所带来的缺点也是显而易见地:混淆试图通过阅读页面导航文件config.xml来把握整个网站流程的人的思路,颠覆已经通过了填鸭式的struts培训的初哥们的神经。所以说,小型的网站适用。hehe.
      

  3.   

    我想我是跑题了。楼主的意思可能是:将一类具有相近意义的action放在一起,比如说,同一个资源记录的修改后保存、新增后保存以及删除操作。
    如二楼那位兄弟所说,这正是DispatchAction所干的活儿,你可以将action从这个超类进行扩展。
    还需在struts-config.xml中指定令牌参数的名称。
      

  4.   

    在页面传递一个参数到action里面判断使用不同的方法,可以使用类反射机制,在配置文件里面通过action里面返回的mapping.findForward();跳转到不同的页面。对应不同的form只要在strutsconfig配置文件和页面对应的path修改即可。
      

  5.   

    不知这样可不可以
    JSP:
    <html:link page="/editSubscription.do?action=Create" paramId="username"
     paramName="registrationForm" paramProperty="username">
      <bean:message key="registration.addSubscription"/>
    </html:link>ACTION:
    String action = request.getParameter("action");
      if (action == null)
        action = "Create";根据action的值不同,进行不同的操作
      

  6.   

    你不过就是想传递参数么,做一个隐藏域。
    1。在ActionForm中加一个变量和相应的get,set方法。假如叫:actionFlag
    2。在jsp中加一句话: <html:hidden styleId="actionFlag" name="YourFormName" property="actionFlag"/>
    3。递交页面的时候写一个javaScript语句付相应的值。
    document.YourFormName.actionFlag.value = "modify";
    4。Action中做相应的判断。
    if ("modify".equal(form.getActionFlag())) {
    ....
    ....}
    5。注意你的scope要是session级别。
      

  7.   

    楼主,
    DispatchAction应该满足你的要求了吧。
    可在Action里设置不同的action参数,另在struts-config.xml 加上 parameter="action"如:
    jsp中
    <html:form path="/DBEntry.do?action=insert" method="post" />
    <html:form path="/DBEntry.do?action=update" method="post"/>action中
    public class DBEntryAction extends DispatchAction {
          public ActionForward insert(四个参数) {    <-方法名和parameter对应。
                。。
          }      public ActionForward update(四个参数) {
                。。
          }
    }struts-config.xml中
    <action path="/DBEntry" type="xxxx.DBEntryAction" parameter="action" ...>    <forward name="success" path="/xxx.jsp"/>
    </action>
      

  8.   

    sagittarius1979(射手爱狮子),讲的很详细,快散分吧
      

  9.   

    DispatchAction DispatchAction DispatchAction DispatchAction DispatchAction
    DispatchAction DispatchAction
    xixi
      

  10.   

    其实很简单啊,在form里加一个hidden域,来做为识别不同操作的标志,然后在action里判断是什么然后调用不同的逻辑层处理就行了.
      

  11.   

    增,删,改,查???在struts-config.xml 里的<action>加上 parameter="method"public class loginAction extends DispatchAction{
      
      public ActionForward add(ActionMapping mapping,Actionform form,HttpServletRequest,req,HttpServletResponse res)throws Exception{
     ............
    ..........
    }
    public ActionForward del(ActionMapping mapping,Actionform form,HttpServletRequest,req,HttpServletResponse res)throws Exception{
     ............
    ..........
    }
    public ActionForward edit(ActionMapping mapping,Actionform form,HttpServletRequest,req,HttpServletResponse res)throws Exception{
     ............
    ..........
    }
    public ActionForward view(ActionMapping mapping,Actionform form,HttpServletRequest,req,HttpServletResponse res)throws Exception{
     ............
    ..........
    }  }
    例如:
    JSP里的<html:form action="login.do?method=add" >