我正在尝试将SiteMesh集成到使用 Tomcat 5 作为我的容器的遗留应用程序中。我有一个main.jsp
我正在用一个简单的装饰器装饰的东西。
在decorators.xml
中,我刚刚定义了一个装饰器:
<decorators defaultdir="/decorators">
<decorator name="layout-main" page="layout-main.jsp">
<pattern>/jsp/main.jsp</pattern>
</decorator>
</decorators>
如果我手动转到http://example.com/my-webapp/jsp/main.jsp
. 但是,在某些地方,servlet 不是重定向到 jsp,而是执行forward:
getServletContext().getRequestDispatcher("/jsp/main.jsp").forward(request, response);
这意味着 URL 保留在类似于http://example.com/my-webapp/servlet/MyServlet
而不是 jsp 文件的位置,因此没有被修饰,我想是因为它与decorators.xml
.
我不能做 a<pattern>/*</pattern>
因为还有其他 jsps 不需要用layout-main.jsp
. 我不能这样做,<pattern>/servlet/MyServlet*</pattern>
因为有时MyServlet
可能会转发到其他时间。main.jsp
error.jsp
有没有办法在不对 servlet 的工作方式进行广泛更改的情况下解决这个问题?由于它是一个遗留应用程序,我没有太多的自由来改变事情,所以我希望有一些配置方面的东西可以解决这个问题。
SiteMesh 的文档真的不是很好。我大部分时间都在使用发行版附带的示例应用程序。我真的很喜欢 SiteMesh,并希望我能在这种情况下让它工作。