Sitemesh 3 一直让我蛮困扰的是不能把那些error页面也给渲染到框架页中,查询源码发现是在 org.sitemesh.webapp.contentfilter.BasicSelector.BasicSelector(boolean, String...) 这个类里面做了控制,里面有个参数是 includeErrorPages,但是在其初始化配置过程中,这个参数只能设置个默认值为 false。
搞了半天,丫的这部分配置虽然也挺灵活,但是真想下手改的地方却都是private的,焦头烂额之后都快打算把源码直接解压到自己的项目目录下来改了。
不过转念一想,阳光底下无新事,我所想到的问题肯定已经有别人也想到了。一Google,果不其然,官方issue里面就有这么一条:sitemesh3 not decorating error pages。
解决办法直截了当:
<!-- lang: xml -->
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>ERROR</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>