<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>4.2&nbsp;The Host bundle</title><link rel="stylesheet" href="css/stylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="Virgo Snaps User Guide"><link rel="up" href="ch04.html" title="4.&nbsp;A Sample Application"><link rel="prev" href="ch04.html" title="4.&nbsp;A Sample Application"><link rel="next" href="ch04s03.html" title="4.3&nbsp;Adding New Content"><!--Begin Google Analytics code--><script type="text/javascript">
			var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
			document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script><script type="text/javascript">
			var pageTracker = _gat._getTracker("UA-2728886-3");
			pageTracker._setDomainName("none");
			pageTracker._setAllowLinker(true);
			pageTracker._trackPageview();
		</script><!--End Google Analytics code--></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.2&nbsp;The Host bundle</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Prev</a>&nbsp;</td><th width="60%" align="center">4.&nbsp;A Sample Application</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s03.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sample-application-host"></a>4.2&nbsp;The Host bundle</h2></div></div></div><p>
			This bundle is very simple with no Java code. It defines the Snaps filter in its <code class="literal">web.xml</code> 
			just as you have seen in the <a class="link" href="ch03.html#using-snaps-configuring-the-host" title="3.1&nbsp;Configuring the Host">Using Snaps</a> section. The 
			menu bar uses the taglibs support to render links for each registered Snap.  
		</p><pre class="programlisting">
&lt;ul&gt;
    &lt;li&gt;&lt;a href="&lt;c:url value="/"/&gt;"&gt;Home&lt;/a&gt;&lt;/li&gt;
    &lt;snaps:snaps var="snaps"&gt;
        &lt;c:forEach var="snap" items="${snaps}"&gt;
            &lt;c:if test="${snap.contextPath ne '/styles'}"&gt;
                &lt;li&gt;&lt;a href="&lt;c:url value="${snap.contextPath}${snap.properties['link.path']}"/&gt;"&gt;
                    ${snap.properties['link.text']}&lt;/a&gt;
                &lt;/li&gt;
            &lt;/c:if&gt;
        &lt;/c:forEach&gt;
    &lt;/snaps:snaps&gt;
&lt;/ul&gt;
		</pre><p>
			This is very similar to an example you have already seen. It puts the links in a list and adds a link at the 
			beginning to return to the host. The properties it is referencing are located in the snaps themselves at 
			<code class="literal">/META-INF/snap.properties</code>.
		</p></div><!--Begin LoopFuse code--><script src="http://loopfuse.net/webrecorder/js/listen.js" type="text/javascript"></script><script type="text/javascript">
			_lf_cid = "LF_48be82fa";
			_lf_remora();
		</script><!--End LoopFuse code--><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.&nbsp;A Sample Application&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;4.3&nbsp;Adding New Content</td></tr></table></div></body></html>