错误页面配方

将Tapestry页用作Servlet错误页

您想修饰您的站点并使用时髦的Tapestry页面而不是默认的404错误页面吗?使用现代servlet容器,这很简单!

相关文章

只需将您的应用程序web.xml升级到2.4版本(或更高版本),并进行一些更改:

web.xml网站
<?xml version=“1.0”encoding=“UTF-8”?><web-app xmlns=“http://java.sun.com/xml/ns/j2ee“xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"版本=“2.4”>菜谱<上下文图表>挂毯.app-package<param-value>com.example.newapp</context-param><过滤器><filter-name>应用程序</filter-name><!-- org.apache.tapestry5.TapestryFilter如果不是Tapestry 5.7.0+--><filter-class>org.apache.tapestry5.http。TapestryFilter</filter-class></过滤器><过滤器映射><filter-name>应用程序</filter-name><url-pattern>/*<dispatcher>REQUEST(请求)</dispatcher><dispatcher>错误</过滤器映射><错误页面><error-code>404</error-code><位置>/error404</location></error-page></web-app>

Tapestry的过滤器必须标记为标准请求和错误的处理程序。这是通过<调度员>中的元素<过滤器映射>部分。

然后必须将错误代码映射到Tapestry URL/错误404资源,这实际上是“Error404”Tapestry页面。

我们将创建一个简单的Error404页面,其中显示一条消息,并(在开发模式下)显示有关传入请求的详细信息。

错误404.tml
<html xmlns:t=“http://tapestry.apache.org/schema/tapestry_5_4.xsd"><头部><title>找不到资源</标题></头><body><div class=“container”><h1>找不到页面或资源</h1><t:if test=“!productionMode”><t:renderobject object=“request”/></t:if></div></body></html>

该页面只提供请求和productionMode属性:

错误404.java
包com.example.newapp.pages;导入org.apache.tapestry5.SymbolConstants;导入org.apache.tapestry5.annotations。财产;导入org.apache.tapestry5.ioc.annotations。注入;导入org.apache.tapestry5.ioc.annotations。符号;//org.apache.tapestry5.服务。如果不是Tapestry 5.7.0,则请求+导入org.apache.tapestry5.services.http。请求;公共类错误404{@财产@注入私人请求请求;@财产@注入@符号(SymbolConstants.PRODUCTION_MODE)私有布尔productionMode;}

最终结果,在何时在生产模式下,如下所示:

具有根索引页面的应用程序的一个问题是,任何通常会生成404错误的无效路径都会被路由到索引页面(因为无效路径看起来像页面的激活上下文)。请参见发布TAP5-2070.