You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by cr...@apache.org on 2003/12/29 23:45:52 UTC

cvs commit: jakarta-struts/contrib/struts-faces/web/example/WEB-INF struts-config.xml

craigmcc    2003/12/29 14:45:52

  Modified:    contrib/struts-faces README.txt
               contrib/struts-faces/src/java/org/apache/struts/faces/application
                        ActionListenerImpl.java
               contrib/struts-faces/src/java/org/apache/struts/faces/taglib
                        LifecycleListener.java
               contrib/struts-faces/web/example/WEB-INF struts-config.xml
  Log:
  Modify the way that an application is configured to use the struts-faces
  integration library such that you must explicitly identify the request
  processor class to use in a <controller> element in struts-config.xml.
  This will pave the way for integration with Tiles, as well as support the
  use of the integration library in Struts apps with multiple sub-app modules.
  
  Revision  Changes    Path
  1.5       +19 -2     jakarta-struts/contrib/struts-faces/README.txt
  
  Index: README.txt
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/contrib/struts-faces/README.txt,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- README.txt	24 Dec 2003 04:47:55 -0000	1.4
  +++ README.txt	29 Dec 2003 22:45:52 -0000	1.5
  @@ -159,7 +159,7 @@
   
                          application -- Integrate with ActionListener,
                                         custom PropertyResolver,
  -                                      custom RequestProcessor
  +                                      custom RequestProcessor(s)
   
                          component   -- Custom JavaServer Faces component
                                         implementations (only Form for now)
  @@ -209,6 +209,7 @@
   
       http://java.sun.com/j2se/
   
  +
   Install a Servlet Container:
   ---------------------------
   
  @@ -453,6 +454,17 @@
       library counterparts, and the expression language syntax is the same
       as that used for value reference expressions.
   
  +* Modify your struts-config.xml file to include identification of the custom
  +  request processor implementation class to be used, by adding the following
  +  element in the appropriate location (typically just before any existing
  +  <message-resources> and <plug-in> elements):
  +
  +    <controller>
  +      <set-property property="processorClass"
  +       value="org.apache.struts.faces.application.FacesRequestProcessor"/>
  +    </controller>
  +
  +
   * For each JSP page that you have modified to use JavaServer Faces
     components instead of traditional Struts tags, modify any <forward>
     elements in your webapp's struts-config.xml file to include "/faces"
  @@ -478,6 +490,11 @@
       immediate="false" (which is the default value) that are nested
       inside a Struts-Faces <s:form> tag will be forwarded through the
       normal Struts request processing lifecycle.
  +
  +* If your application contains cancel buttons rendered by the <html:cancel>
  +  tag, you should replace them with an <h:command_button> that has an
  +  "id" attribute set to "cancel" in order for this button to be recognized
  +  by Struts as a cancel button.
   
   * If your application itself provides additional UIComponent and/or
     Renderer implementations, you must register them with the default
  
  
  
  1.4       +58 -7     jakarta-struts/contrib/struts-faces/src/java/org/apache/struts/faces/application/ActionListenerImpl.java
  
  Index: ActionListenerImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/contrib/struts-faces/src/java/org/apache/struts/faces/application/ActionListenerImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ActionListenerImpl.java	24 Dec 2003 03:21:01 -0000	1.3
  +++ ActionListenerImpl.java	29 Dec 2003 22:45:52 -0000	1.4
  @@ -80,6 +80,7 @@
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import org.apache.struts.Globals;
  +import org.apache.struts.action.ActionServlet;
   import org.apache.struts.action.RequestProcessor;
   import org.apache.struts.config.ModuleConfig;
   import org.apache.struts.faces.Constants;
  @@ -186,9 +187,8 @@
                   log.trace("Assigned to module with prefix '" +
                             moduleConfig.getPrefix() + "'");
               }
  -            RequestProcessor processor = (RequestProcessor)
  -                servletContext.getAttribute
  -                (Globals.REQUEST_PROCESSOR_KEY + moduleConfig.getPrefix());
  +            RequestProcessor processor =
  +                getRequestProcessor(moduleConfig, servletContext);
               if (log.isTraceEnabled()) {
                   log.trace("Invoking request processor instance " + processor);
               }
  @@ -205,5 +205,56 @@
   
       // ------------------------------------------------------ Protected Methods
   
  +
  +    /**
  +     * <p>Look up and return the <code>RequestProcessor</code> responsible for
  +     * the specified module, creating a new one if necessary.  This method is
  +     * based on the corresponding code in <code>ActionServlet</code>, which
  +     * cannot be used directly because it is a protected method.</p>
  +     *
  +     * @param config The module configuration for which to
  +     *  acquire and return a RequestProcessor
  +     * @param context The <code>ServletContext</code> instance
  +     *  for this web application
  +     *
  +     * @exception IllegalStateException if we cannot instantiate a
  +     *  RequestProcessor instance
  +     */
  +    protected RequestProcessor getRequestProcessor(ModuleConfig config,
  +                                                   ServletContext context) {
  +            
  +        String key = Globals.REQUEST_PROCESSOR_KEY + config.getPrefix();
  +        RequestProcessor processor =
  +            (RequestProcessor) context.getAttribute(key);
  +            
  +        if (processor == null) {
  +            try {
  +                if (log.isDebugEnabled()) {
  +                    log.debug("Instantiating RequestProcessor of class " +
  +                              config.getControllerConfig().getProcessorClass());
  +                }
  +                ActionServlet servlet = (ActionServlet)
  +                context.getAttribute(Globals.ACTION_SERVLET_KEY);
  +                processor =
  +                    (RequestProcessor) RequestUtils.applicationInstance(
  +                        config.getControllerConfig().getProcessorClass());
  +                processor.init(servlet, config);
  +                context.setAttribute(key, processor);
  +            } catch (Exception e) {
  +                log.error("Cannot instantiate RequestProcessor of class "
  +                          + config.getControllerConfig().getProcessorClass(),
  +                          e);
  +                throw new IllegalStateException(
  +                    "Cannot initialize RequestProcessor of class "
  +                        + config.getControllerConfig().getProcessorClass()
  +                        + ": "
  +                        + e);
  +            }
  +
  +        }
  +        return (processor);
  +
  +    }
  +    
   
   }
  
  
  
  1.5       +8 -6      jakarta-struts/contrib/struts-faces/src/java/org/apache/struts/faces/taglib/LifecycleListener.java
  
  Index: LifecycleListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/contrib/struts-faces/src/java/org/apache/struts/faces/taglib/LifecycleListener.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LifecycleListener.java	24 Dec 2003 03:21:01 -0000	1.4
  +++ LifecycleListener.java	29 Dec 2003 22:45:52 -0000	1.5
  @@ -131,8 +131,8 @@
           log.info("attributeAdded(" + name + "," + event.getValue() + ")");
           if (name.equals(Globals.ACTION_SERVLET_KEY)) {
               servlet = (ActionServlet) event.getValue();
  -        } else if (name.startsWith(Globals.MODULE_KEY)) {
  -            createProcessor(servlet, (ModuleConfig) event.getValue());
  +            // } else if (name.startsWith(Globals.MODULE_KEY)) {
  +            //     createProcessor(servlet, (ModuleConfig) event.getValue());
           }
   
       }
  @@ -210,6 +210,7 @@
        * @param servlet ActionServlet instance we are associated with
        * @param modConfig ModuleConfig instance we are associated with
        */
  +    /*
       private RequestProcessor createProcessor(ActionServlet servlet,
                                                ModuleConfig modConfig) {
   
  @@ -228,6 +229,7 @@
           return (processor);
   
       }
  +    */
   
   
       /**
  
  
  
  1.3       +2 -0      jakarta-struts/contrib/struts-faces/web/example/WEB-INF/struts-config.xml
  
  Index: struts-config.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/contrib/struts-faces/web/example/WEB-INF/struts-config.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- struts-config.xml	24 Dec 2003 03:21:02 -0000	1.2
  +++ struts-config.xml	29 Dec 2003 22:45:52 -0000	1.3
  @@ -144,6 +144,8 @@
       <!-- The "input" parameter on "action" elements is the name of a
            local or global "forward" rather than a subapp-relative path -->
       <set-property property="inputForward" value="true"/>
  +    <set-property property="processorClass"
  +            value="org.apache.struts.faces.application.FacesRequestProcessor"/>
     </controller>
   
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org