You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Adam Zimowski <zi...@gmail.com> on 2007/07/11 16:19:35 UTC

T5: bug in redirect?

public class Start {
 String onActivate() {
  return <ANYCLASS>.class.getSimpleName();
 }
}

This works only if URL requested explicitly states the start page:

http://localhost/MYAPP/start

However, if URL requested omits start (default page)

http://localhost/MYAPP/

The request never returns.

Tomcat 5.5, Tap 5.0.5.

-adam

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5: bug in redirect?

Posted by Adam Zimowski <zi...@gmail.com>.
Thank You Nick. This helps!

On 7/11/07, Nick Westgate <ni...@key-planning.co.jp> wrote:
> Yes, this is a bug in RootPathDispatcher:
> https://issues.apache.org/jira/browse/TAPESTRY-1627
>
> Until it's fixed, if you really need to you can patch Tapestry
> at runtime by adding the code below to your AppModule.
>
> Cheers,
> Nick.
>
>
>      public void contributeMasterDispatcher(
>          OrderedConfiguration<Dispatcher> configuration,
>          PageRenderRequestHandler pageRenderRequestHandler,
>          ComponentClassResolver componentClassResolver,
>          @Symbol("tapestry.start-page-name")
>          String startPageName,
>          @InjectService("PageResponseRenderer")
>          PageResponseRenderer pageResponseRenderer)
>      {
>          class RootPathDispatcherFix implements Dispatcher
>          {
>              private final ComponentClassResolver _componentClassResolver;
>
>              private final PageRenderRequestHandler _handler;
>
>              @SuppressWarnings("unused")
>              private final PageResponseRenderer _renderer;
>
>              private final String _startPageName;
>
>              private final String[] _emptyContext = new String[0];
>
>              public RootPathDispatcherFix(
>                  final ComponentClassResolver componentClassResolver,
>                  final PageRenderRequestHandler handler,
>                  final PageResponseRenderer renderer,
>                  final String startPageName)
>              {
>                  _componentClassResolver = componentClassResolver;
>                  _handler = handler;
>                  _renderer = renderer;
>                  _startPageName = startPageName;
>              }
>
>              public boolean dispatch(Request request, final Response response)
>                  throws IOException
>              {
>                  // Only match the root path
>                  if (!request.getPath().equals("/"))
>                      return false;
>                  if (_componentClassResolver.isPageName(_startPageName))
>                  {
>                      ActionResponseGenerator responseGenerator = _handler.handle(_startPageName,
>                          _emptyContext);
>
>                      if (responseGenerator != null)
>                          responseGenerator.sendClientResponse(response);
>                      return true;
>                  }
>                  return false;
>              }
>          }
>
>          // Looks for the root path and renders the start page
>          configuration.add("RootPathFix", new RootPathDispatcherFix(componentClassResolver,
>              pageRenderRequestHandler, pageResponseRenderer, startPageName), "before:RootPath");
>      }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5: bug in redirect?

Posted by Nick Westgate <ni...@key-planning.co.jp>.
Yes, this is a bug in RootPathDispatcher:
https://issues.apache.org/jira/browse/TAPESTRY-1627

Until it's fixed, if you really need to you can patch Tapestry
at runtime by adding the code below to your AppModule.

Cheers,
Nick.


     public void contributeMasterDispatcher(
         OrderedConfiguration<Dispatcher> configuration,
         PageRenderRequestHandler pageRenderRequestHandler,
         ComponentClassResolver componentClassResolver,
         @Symbol("tapestry.start-page-name")
         String startPageName,
         @InjectService("PageResponseRenderer")
         PageResponseRenderer pageResponseRenderer)
     {
         class RootPathDispatcherFix implements Dispatcher
         {
             private final ComponentClassResolver _componentClassResolver;

             private final PageRenderRequestHandler _handler;

             @SuppressWarnings("unused")
             private final PageResponseRenderer _renderer;

             private final String _startPageName;

             private final String[] _emptyContext = new String[0];

             public RootPathDispatcherFix(
                 final ComponentClassResolver componentClassResolver,
                 final PageRenderRequestHandler handler,
                 final PageResponseRenderer renderer,
                 final String startPageName)
             {
                 _componentClassResolver = componentClassResolver;
                 _handler = handler;
                 _renderer = renderer;
                 _startPageName = startPageName;
             }

             public boolean dispatch(Request request, final Response response)
                 throws IOException
             {
                 // Only match the root path
                 if (!request.getPath().equals("/"))
                     return false;
                 if (_componentClassResolver.isPageName(_startPageName))
                 {
                     ActionResponseGenerator responseGenerator = _handler.handle(_startPageName,
                         _emptyContext);

                     if (responseGenerator != null)
                         responseGenerator.sendClientResponse(response);
                     return true;
                 }
                 return false;
             }
         }

         // Looks for the root path and renders the start page
         configuration.add("RootPathFix", new RootPathDispatcherFix(componentClassResolver,
             pageRenderRequestHandler, pageResponseRenderer, startPageName), "before:RootPath");
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org