你在<action-mapping>中配置啊!

解决方案 »

  1.   

    使用org.apache.struts.actions.LookupDispatchActionorg.apache.struts.actions.LookupDispatchAction类
    LookupDispatchAction 是 DispatchAction的子类。 The LookupDispatchAction 类提供了一种机制,将一系列相关功能模块化到一个操作中,而无需为每个功能创建单独的操作。以用于添加用户、更新用户和删除用户的一系列相关功能为例。无需创建AddUserAction类,UpdateUserAction类和RemoveUserAction类,您可以通过扩展LookupDispatchAction,创建具有以下三个方法的UserAction 类:add( ),、update( )和remove( )。 运行时, LookupDispatchAction将请求传进给其子类中的相应方法。 根据由传入的请求发送给LookupDispatchAction 类的请求参数的值,该类决定调用哪个方法。LookupDispatchAction 使用请求参数的值来逆向映射到Struts 资源文件 ApplicationResources.properties中的属性。 就是说,将请求参数的值与资源文件中的属性值相比较,直到找到匹配值为止。然后,相匹配的属性的关键字将用作另一映射的关键字,该关键字将映射到LookupDispatchAction子类中将要执行的方法。要使用LookupDispatchAction,您必须创建它的一个予类,并提供处理请求时要调用的一系列方法。该子类还必须包含getKeyMethodMap( )方法,此方法可以将类中的方法与Struts资源文件中的关键字形成映射关系。另外,您必须为操作设置一个指定请求参数名称的操作映射,此参数将用来选择各个请求将要调用的方法。下面的示例给出了从DispatchAction派生的UserAction类: package com.jamesholmes.example;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.actions.DispatchAction;public class UserAction extends LookupDispatchAction
    {
      protected Map getKeyMethodMap()
      {
        HashMap map = new HashMap();
        map.put("button.add", "add");
        map.put("button.update", "update");
        map.put("button.remove", "remove");    return map;
      }  public ActionForward add(ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response)
        throws Exception
      {
        // Add user.
        …    return new ActionForward("success");
      }  public ActionForward update(ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response)
        throws Exception
      {
        // Update user.
        …    return new ActionForward("success");
      }  public ActionForward remove(ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response)
        throws Exception
      {
        // Remove user.
        …    return new ActionForward("success");
      }
    }
    注意 该类没有像其它Action的子类那样实现execute( )方法。这是因为DispatchAction提供了该方法的(负责委托给各个方法)的实现。还要注意getKeyMethodMap( )方法的实现。该方法是 LookupDispatchAction的子类所需的,用来将Struts资源文件中的关键字名称映射到类中的方法。资源文件中的关键字的值用于与传入的请求参数的值(由Struts配置文件中的action标记的parameter属性指定)相匹配 。为了使LookupDispatchAction子类工作,你必须在Struts 配置文件中创建一个可以指定请求参数名称的操作映射,该请求参数用于选择特定请求将要调用的方法。以下是介绍如何操作的示例代码: <action-mappings>
      <action path="/User"
              type="com.jamesholmes.example.UserAction"
         parameter="function"/>
    </action-mappings>
    由action标记的parameter 属性指定的值将用作请求参数的名称,其中包含Struts资源文件中的关键字的值,如下所示: button.add=Add User
    button.update=Update User
    button.remove=Remove User
    LookupDispatchAction将使用传入的请求参数值在资源文件中逆向查找某个关键字。根据由getKeyMethodMap( )方法指定的“关键字-方法”映射,像匹配的关键字将映射到要执行的相应方法。
      

  2.   

    就一个action的,如果其中一个用js来完成,具体怎么做?
      

  3.   

    <a href="javascript:window.自定义的函数;">xxx</a>
      

  4.   

    如果只有2个页面.一个下一步.一个上一部.可以用一个flag来判断.如果第一次填写为false.已经填写过.则取出数据.然后可以修改.再提交..,可以用一个getMaxId()的方法.来获得数据.我想你写如的数据应该是最新的ID.吧.
      

  5.   

    一个思路,供楼主参考:
    你的这几个页面应该属于同一个业务逻辑整体,因此所有页面都指向同一个Action,在Action中用一个static变量pageIndex表示第几个页面,同时将每个页面的表单Form对象做为Acion的private成员,在每个页面的jsp中用一个hidden元素表示前进还是后退,点击“下一步”时将其置为"forward",点击“上一步”时将其置为"back",如果是“forward",在Action中将上一页面的form表单数据存入对应的form成员,同时pageIndex++并且request.setAtrribute("flag","forward"),如果是“back”,在Action中将之前已保存的上一页面的form成员并request.setAttribute("formValue",PageNForm);request.setAttribute("flag","back"),同时pageIndex--;每个jsp页面中先request.getAttribute("flag");如果是“back”,则PageNFrom form = (PageNForm)request.getAttribute("formValue");然后将表单元素值设为取得的form中的值即可