Tapestry:如何将不推荐使用的 URL 重定向到错误页面

Tapestry: How to redirect deprecated URLs to an error page

我有使用 Apache Tapestry 构建的遗留 Web 应用程序。除了几个页面之外,我已经弃用了应用程序的大部分功能。我希望此应用程序在生产中 运行,但我想将已弃用的 pages/URLs 重定向到某个错误代码为 404 的错误页面。我应该在哪里配置它?我有 web.xml 和 jboss-web.xml。我是否需要在某些 Tapestry 配置文件中执行此操作?

您可以为 RequestHandler 服务贡献一个 RequestFilter,即在您的 AppModule 中:

public void contributeRequestHandler(
              OrderedConfiguration<RequestFilter> configuration)
{
    // Each contribution to an ordered configuration has a name,
    // When necessary, you may set constraints to precisely control
    // the invocation order of the contributed filter within the pipeline.

    configuration.add("DeprecatedURLs", new RequestFilter() {
        @Override
        public boolean service(Request request,
                               Response response,
                               RequestHandler handler) throws IOException
        {
            String path = request.getPath();
            if (isDeprecated(path))
            {
                response.sendError(404, "Not found");
                return;
            }

            return handler.service(request, response);
        }
    }, "before:*");
}

注意 before:* 排序约束,它应该将此过滤器注册为 RequestHandler's configuration 中的第一个。