楼主指的扩充 是什么意思
我一般会用DynamicAction 来做

解决方案 »

  1.   

    action就一个转发类,没啥搞头吧,业务逻辑写这里也不是很合适
      

  2.   

    package netstore.framework;import javax.servlet.http.*;
    import javax.servlet.RequestDispatcher;
    import java.util.Locale;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.RequestProcessor;
    import org.apache.struts.config.ForwardConfig;
    import org.apache.struts.Globals;/**
     * A customized RequestProcessor that checks the user's preferred Locale
     * from the request each time. If a Locale is not in the session or
     * the one in the session doesn't match the request, the Locale in the
     * request is set to the session.
     */
    public class CustomRequestProcessor extends RequestProcessor {    protected void processLocale(HttpServletRequest request,
                                     HttpServletResponse response) {      // Are we configured to select the Locale automatically?
          if (!moduleConfig.getControllerConfig().getLocale()) {
            return;
          }      // Get the Locale (if any) that is stored in the user's session
          HttpSession session = request.getSession();
          Locale sessionLocale = (Locale)session.getAttribute(Globals.LOCALE_KEY);      // Get the user's preferred Locale from the request
          Locale requestLocale = request.getLocale();      // If was never a Locale in the session or it has changed, set it
          if (sessionLocale == null ||  (sessionLocale != requestLocale) ){
            if (log.isDebugEnabled()) {
              log.debug(" Setting user locale '" + requestLocale + "'");
            }
            // Set the new Locale into the user's session
            session.setAttribute( Globals.LOCALE_KEY, requestLocale );
          }
        }  protected boolean processPreprocess( HttpServletRequest request,
                                          HttpServletResponse response){    boolean continueProcessing = true;    // Get the name of the remote host and log it
        String remoteHost = request.getRemoteHost();
        log.info( "Request from host: " + remoteHost );    // Make sure the host is from one that you expect
        if ( remoteHost == null || !remoteHost.startsWith( "127.") ){
           // Not the localhost, so don't allow the host to access the site
           continueProcessing = false;       ForwardConfig config = moduleConfig.findForwardConfig("Unauthorized");
           try{
             response.sendRedirect( config.getPath() );
           }catch( Exception ex ){
             log.error( "Problem sending redirect from processPreprocess()" );
           }
        }    return continueProcessing;
      }
    }
    struts-config.xml
    <controller 
      contentType="text/html;charset=GB2312"
      locale="true"
      nocache="true"
      processorClass="org.apache.struts.action.RequestProcessor"/>
      

  3.   

    原来是要扩展Action ,不好意思。呵呵
      

  4.   

    应该是扩展RequestProcessor吧?action中就一个execute方法,没什么好扩充的。而且structs1.2之后的版本都是通过RequestProcessor来实行总调度的。
      

  5.   

    就是要写一个action基类,完成错误处理,跳转控制,减少具体action类中的代码
      

  6.   

    建议你看看孙卫勤的 精通struct,里面有详细的介绍
      

  7.   

    完成错误处理,跳转控制,减少具体action类中的代码=======================
    这是什么意思?什么错误处理?ActionError么?formbean本身不是已经进行了一层拦截了么
    跳转控制用mapping.findForward,就这么一句话,你还想怎么做?减少具体action类中的代码,这个问题问的太没水准了吧,这要看你的实际情况了啊。
    一般是把业务逻辑写到Service中,action中只是简单调用业务层的方法而已,已经简化了,你还想如何简化呢?把你的实际需求说出来让大家帮你参谋一下,你现在的这个想法首先就未必是对的。