> Is there a simple way to do something similar and get a 301 permanent
> redirect? In particular, can I modify the PageRenderLinkWithContext to
> control the type of redirect?

Tapestry eventually calls ServletResponse.sendRedirect, which is
always a 302. If you want to send a 301 you have to do it manually.

Here's some code that works in the same way as HttpError.

public class PermanentRedirect {
    private Link link;

    public PermanentRedirect(Link link) {
        this.link = link;
    }

    public Link getLink() {
        return link;
    }
}

// in AppModule
    public void contributeComponentEventResultProcessor(
            final Response response,
            MappedConfiguration<Class, ComponentEventResultProcessor>
configuration
    ) {
        configuration.add(PermanentRedirect.class, new
ComponentEventResultProcessor<PermanentRedirect>() {
            public void processResultValue(PermanentRedirect value)
throws IOException {
                response.setHeader("Location", value.getLink().toAbsoluteURI());
                // Send error commits the response
                response.sendError(301, "Moved Permanently");
            }
        });
    }

Josh

On Fri, Jun 3, 2011 at 9:13 AM, Mark <mark-li...@xeric.net> wrote:
> A have an onActivate method like this:
>
>    Object onActivate(EventContext context) {
>
>        //we have what we need to render the page
>        if(context.getCount() == 2)  {
>            this.keyword = context.get(String.class,0);
>            this.page = context.get(Integer.class, 1);
>            quotes =  quoteService.getQuotesForKeyword(keyword);
>            return null;
>        }
>
>        //Missing a context, redirect to default context
>        if(context.getCount() == 1)  {
>            this.keyword = context.get(String.class, 0);
>            return
> pageRenderLinkSource.createPageRenderLinkWithContext("keyword",
> keyword, 1);
>        }
>
>        //Not context at all, do a 404.
>        return new HttpError(404, "Resource Not Found");
>    }
>
>
> Returning a PageRenderLinkWithContext does a 302 temporary redirect.
>  return pageRenderLinkSource.createPageRenderLinkWithContext("keyword",
> keyword, 1);
>
> Is there a simple way to do something similar and get a 301 permanent
> redirect? In particular, can I modify the PageRenderLinkWithContext to
> control the type of redirect?
>
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

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

Reply via email to