Once SiteMesh has been installed and configured, you can begin writing decorators for your web application.
Here is an example structure of a web application. This is not needed for SiteMesh to work.
/decorators |
Directory containing all decorator files (e.g. |
/includes |
Directory containing all files to be included into other files (e.g. |
/images |
Directory containing all images (e.g. |
/styles |
Directory containing all .CSS styles (e.g. |
/scripts |
Directory containing all scripts (JavaScript, VBScript files). |
Good practices:
includes/navigation.jsp
, includes/style.jsp
)./
") path. Use <%=request.getContextPath()%>/
instead.
This will make life easier when moving your web application under another context path.
1: <%--
2: % This is the main decorator for all SOMECOMPANY INTRANET pages.
3: % It includes standard caching, style sheet, header, footer and copyright notice.
4: --%>
5: <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
6: <%@ include file="/includes/cache.jsp" %>
7: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
8: <html>
9: <head>
10: <title><decorator:title default="INTRANET" /></title>
11: <decorator:head />
12: <%@ include file="/includes/style.jsp" %>
13: </head>
14: <body bgcolor="#FFFFFF" background="<%=request.getContextPath()%>/images/bg.gif">
15: <script type="text/javascript">window.status = "Loading: <decorator:title default="INTRANET" />...";</script>
16: <%@ include file="/includes/header.jsp"%>
17: <table width="100%" border="0" cellspacing="0" cellpadding="0">
18: <tr>
19: <td height="20" nowrap> </td>
20: </tr>
21: <tr>
22: <td width="1%" nowrap> </td>
23: <td width="16%" valign="top" nowrap>
23: <script type="text/javascript">window.status = "Loading: Navigation...";</script>
24: <%@ include file="/includes/navigation.jsp" %>
25: </td>
26: <td width="2%" nowrap> </td>
27: <td valign="top">
28: <br>
29: <script type="text/javascript">window.status = "Loading: Document body...";</script>
30: <div class="docBody"><decorator:body /></div>
31: </td>
32: <td width="1%" nowrap> </td>
33: </tr>
34: </table>
35: <br>
36: <%@ include file="/includes/footer.jsp" %>
37: <%@ include file="/includes/copyright.jsp" %>
38: <script type="text/javascript">window.status = "Done";</script>
39: </body>
40: </html>
decorator:
tags to work (also needed on all pages that work with inline decorators (page:applyDecorator).docBody
class. This way the navigation and body do not have to have the same font.Now open WEB-INF/decorators.xml
with your favorite editor
and let SiteMesh know there is a decorator (with a mapping):
<decorators defaultdir="/decorators"> <decorator name="main" page="main.jsp"> <pattern>/*</pattern> </decorator> </decorators>
Now deploy the web application, go to the welcome page, and the main decorator will be applied.
More examples are included with the SiteMesh distribution, under the src/example-webapp directory. If the examples don't give you enough to go on, take a look at SiteMesh in action, download the petsoar-app at http://www.wiley.com/legacy/compbooks/walnes/.