<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>fforw.de &#187; Uncategorized</title>
	<atom:link href="http://fforw.de/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://fforw.de</link>
	<description>skip the boring parts</description>
	<lastBuildDate>Fri, 10 Sep 2010 16:32:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>YUIZilla Compressor</title>
		<link>http://fforw.de/post/yuizilla-compressor/</link>
		<comments>http://fforw.de/post/yuizilla-compressor/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 21:52:09 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[rhino]]></category>
		<category><![CDATA[yuicompressor]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=5</guid>
		<description><![CDATA[After again spending time to fix issues resulting from a collision of the yuicompressor jar and the normal rhino jar in one of my projects, I came up with a more radical solution: Download the source codes from yuicompressor and the corresponding rhino release Replace every occurance of &#8220;mozilla&#8221; with &#8220;yuizilla&#8221; PROFIT!  So now I [...]]]></description>
			<content:encoded><![CDATA[<p>After again spending time to fix issues resulting from a collision of the yuicompressor jar and the normal rhino jar in one of my projects, I came up with a more radical solution:</p>
<ol>
<li>Download the source codes from yuicompressor and the corresponding rhino release</li>
<li>Replace every occurance of &#8220;mozilla&#8221; with &#8220;yuizilla&#8221;</li>
<li>PROFIT!</li>
</ol>
<p> So now I have a version of the yuicompressor that works fine and does not conflict with the rhino version I also have in my project. And I don&#8217;t need any stupid jar class loaders or have to write stdin/stdout handling for some terribly slow external yuicompressor process. I can just use the classes </p>
<ul>
<li><em>com.yahoo.platform.yui.compressor.CssCompressor</em> </li>
<li><em>com.yahoo.platform.yui.compressor.JavaScriptCompressor</em> </li>
</ul>
<p>and be done with it. Hurray for fast dynamic server-side script and style compression!  </p>
<ul>
<li><a href="/static/files/yuizillacompressor-2.4.2.jar">Download yuizillacompressor-2.4.2</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/yuizilla-compressor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hybrid XML-Annotation-based Controllers in Spring</title>
		<link>http://fforw.de/post/hybrid-xml-annotation-based-controllers-in-spring/</link>
		<comments>http://fforw.de/post/hybrid-xml-annotation-based-controllers-in-spring/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 08:59:54 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[annotations]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[spring mvc]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=6</guid>
		<description><![CDATA[When talking to people about the Spring MVC, it became increasingly clear to me that many are thrilled by the possibilities of using annotation based controllers but are somewhat put off by auto discovery / auto-injecting. Luckily, it&#8217;s pretty easy to combine the power of annotation-based MVC Controller (extremely flexible controller methods, flexible binding and [...]]]></description>
			<content:encoded><![CDATA[<p>When talking to people about the Spring MVC, it became increasingly clear to me that many are thrilled by the possibilities of using annotation based controllers but are somewhat put off by auto discovery / auto-injecting.</p>
<p>Luckily, it&#8217;s pretty easy to combine the power of annotation-based MVC Controller (extremely flexible controller methods, flexible binding and validation) and the advantages of  externally declared beans: You continue to use the <em>@Controller</em> annotation, but you don&#8217;t use a <em>&lt;context:component-scan/></em> directive. </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/hybrid-xml-annotation-based-controllers-in-spring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My media hub</title>
		<link>http://fforw.de/post/my-media-hub/</link>
		<comments>http://fforw.de/post/my-media-hub/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 12:16:17 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[EasyPeasy]]></category>
		<category><![CDATA[Eee Box B202]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[mythtv]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=7</guid>
		<description><![CDATA[I&#8217;ve been thinking about the idea of a small, low-power media pc for the living room for quite some time now. when I saw the eee box, I knew that I would like to try to build a system based on it. My plans are now entering the final stages after a long and diffcult [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about the idea of a small, low-power media pc for the living room for quite some time now. when I saw the eee box, I knew that I would like to try to build a system based on it.</p>
<p>My plans are now entering the final stages after a long and diffcult journey. Both delivery problems (the eee took about 3 months to be actually delivered) and an unusual amount of linux driver problems were the main causes of this.</p>
<p>The components I got in the end were:</p>
<ul>
<li>Asus Eee Box B202</li>
<li>One &#8220;Terratec Cynergy DT USB XS Diversity&#8221;, a dual DVB-T tuner USB stick</li>
<li>an external DVD rewriter</li>
</ul>
<p><span id="more-7"></span></p>
<p>I&#8217;m totally satisfied with the eee box. Sure, the manual was only available in languages I did not speak, the linux on it was something I hated instantly &#8212; but all that is meaningless because thanks to teh power of GNU/Linux and hardware with open source drivers, I can just install something I like. It&#8217;s a nice piece of hardware that now has Easy Peasy, a version of Ubuntu Linux for Eee PCs/Boxes.</p>
<p>Not everything was easy, something were barely possible. I mean, adding new USB device ids to a driver is something not many people manage to do. It was another tragic case of a hardware producer suddenly putting different hardware into a device with exactly the same name and no visual differences. I really walked into the nearby store with a hardware compatibility list. I found the &#8220;Terratec Cynergy DT USB XS Diversity&#8221; with was of course not the one that was supported out of the box in spite of identical name and looks. In addition to the problem of having to patch the drivers, I was also facing strange bugs and a misunderstaning of the available documentation.</p>
<p>The rest was really easy. Installing EasyPeasy was basically just inserting the CD into the external DVD drive and clicking through 7 questions or so; only complicated by my insisting on a self-sized partition table. no complications.</p>
<p>The installation of mythtv and lircd was no problem either once the mysterious remote control bugs were fixed by someone from the linux-dvb developers (and me finally getting that I was trying the wrong way to fix things).</p>
<p>All in all I&#8217;m really happy with my new media center. For me this showed something about hardware support for linux:</p>
<p>It doesn&#8217;t matter if the software you deliver on your hardware is utter crap, as long as there are free drivers that third parties can use to create better software.</p>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/my-media-hub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two new projects: svenson and jcouchdb</title>
		<link>http://fforw.de/post/two-new-projects-svenson-and-jcouchdb/</link>
		<comments>http://fforw.de/post/two-new-projects-svenson-and-jcouchdb/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 15:04:02 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JSON]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=8</guid>
		<description><![CDATA[In my never ending fight against teh wind-mills, I have produced two new open source projects that are somehow connected to each other. First there is svenson which is a release of my own personal JSON generator / parser. The name is a result of a joke. When my boss asked me what was the [...]]]></description>
			<content:encoded><![CDATA[<p>In my never ending fight against teh wind-mills, I have produced two new open source projects that are somehow connected to each other.</p>
<p>First there is svenson which is a release of my own personal JSON generator / parser. The name is a result of a joke. When my boss asked me what was the unique characteristic of it, my first answer was: &#8220;It&#8217;s written by <strong>me</strong>!&#8221;. So the name comes from &#8220;Sven&#8217;s JSON&#8221;. </p>
<p>The answer was of course not totally serious. I wrote svenson because none of the JSON parsers out there seemed to have the right combination of being not too complicated yet flexible enough to work well in different scenarios. Being able to use a healthy mix of concrete typed java beans and dynamic map / list constructs seemed to be the best way to go, yet none of the JSON libraries out there seemed to go even near that direction. </p>
<p>See the svenson wiki at google code for an explanation of how svenson works.</p>
<p>The other project is called jcouchdb and is my attempt at writing a Java driver for <a href="http://incubator.apache.org/couchdb/" target="_blank" title="couchdb project homepage at apache.org">couchdb</a>. It is very much connected to svenson as it was the driving force for the parser part of svenson. it offers an API that lets you use all those nice svenson features with couchdb documents. </p>
<p><strong>Links:</strong> </p>
<ul>
<li><a href="http://code.google.com/p/svenson/">svenson homepage at google code</a> </li>
<li><a href="http://code.google.com/p/jcouchdb/">jcouchdb homepage at google code</a> </li>
<li><a href="http://couchdb.apache.org/">couchdb homepage at apache.org</a>  </li>
</ul>
<p style="font-size: x-small"><strong>update:</strong>  link to couchdb</p>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/two-new-projects-svenson-and-jcouchdb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The rhythm of falling things</title>
		<link>http://fforw.de/post/the-rhythm-of-falling-things/</link>
		<comments>http://fforw.de/post/the-rhythm-of-falling-things/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 07:58:28 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[rhythm]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=9</guid>
		<description><![CDATA[Something that keeps coming back to me lately is the realization of how similar break beats are to hard things that fall to the ground. I bet you could go outside and record falling things and piece together the sounds so that each initial impact sound is another emphasis in the rhythmic pattern of an [...]]]></description>
			<content:encoded><![CDATA[<p>Something that keeps coming back to me lately is the realization of how similar break beats are to hard things that fall to the ground. I bet you could go outside and record  falling things and piece together the sounds so that each initial impact sound is another emphasis in the rhythmic pattern of an awesome break beat.</p>
<p>It&#8217;s like the rhythm bound to the timing of things fallen is just a very natural and pleasing beat to us. Faster and it seems hasty, slower and it seems boring.</p>
<p>I should really investigate that.. </p>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/the-rhythm-of-falling-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comments, again</title>
		<link>http://fforw.de/post/comments-again/</link>
		<comments>http://fforw.de/post/comments-again/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 10:15:34 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[fforw.de]]></category>
		<category><![CDATA[notice]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=10</guid>
		<description><![CDATA[Seems like I fucked up the anonymous reply function somehow which always led to an (invisible) form validation error. My apology to all the people who tried to comment and couldn&#8217;t. I would restore the comments but my logs only show that people tried to comment and not what they wote.]]></description>
			<content:encoded><![CDATA[<p>Seems like I fucked up the anonymous reply function somehow which always led to an (invisible) form validation error. My apology to all the people who tried to comment and couldn&#8217;t. I would restore the comments but my logs only show that people tried to comment and not what they wote.</p>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/comments-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring Praxishandbuch</title>
		<link>http://fforw.de/post/spring-praxishandbuch/</link>
		<comments>http://fforw.de/post/spring-praxishandbuch/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 09:39:48 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=11</guid>
		<description><![CDATA[I&#8217;ve been working a lot with the Spring Framework again in the last year. Apart from lots of my work involving it and the JsServ Interceptor I wrote last weekend, another result of this is a book some people from my company wrote. It is about Spring and integrating other technologies into it. It is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working a lot with the <a href="http://springframework.org/">Spring Framework</a>  again in the last year. Apart from lots of my work involving it and the <a href="/post/JsServ_-_Serverside_Javascript_and_DOM_emulation/">JsServ</a>  Interceptor I wrote last weekend, another result of this is a book some people from my company wrote. It is about Spring and integrating other technologies into it. It is meant to focus on the practical aspects and tries to explain some exemplary solutions to common problems encountered when working with Spring.</p>
<p>I wrote an awesome chapter about web development with Spring which contains examples for creating a little shop application with a REST-like interface in Spring Web MVC and Spring Webflow. </p>
<p>So if you like a read a brilliant book Spring development, go and buy it <strong> <img src='http://fforw.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong>. This might work best if you can read German, but you can buy one anyway if you don&#8217;t. Hell, buy two and give one away for Xmas.</p>
<p>The book and example code should be available in a few days. </p>
<p><strong>Links:</strong>  </p>
<ul>
<li><a href="http://amazon.de/gp/product/3939084395/ref=s9_asin_image_1/303-5057200-6681826?pf_rd_m=A3JWKAKR8XB7XF&amp;pf_rd_s=center-2&amp;pf_rd_r=0YXT7DZQYXBQYJB1G2TG&amp;pf_rd_t=101&amp;pf_rd_p=158843691&amp;pf_rd_i=301128">Buy the &#8220;Spring Praxishandbuch&#8221; at amazon.de</a> </li>
<li><a href="http://entwickler-press.de/ep/psecom,id,1,buchid,129,p,0,_languge,de.html">&#8220;Spring Praxishandbuch&#8221; homepage at entwicklerpress.de</a> </li>
<li><a href="http://springframework.org/">Spring Framework</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/spring-praxishandbuch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ff javascript library update to 1.11</title>
		<link>http://fforw.de/post/ff-javascript-library-update-to-111/</link>
		<comments>http://fforw.de/post/ff-javascript-library-update-to-111/#comments</comments>
		<pubDate>Sat, 24 Mar 2007 13:52:02 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[ffjs]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=14</guid>
		<description><![CDATA[The ff javascript library is now available in the version 1.11 which is a small maintainance update to version 1.1 Changes are: introduced ff.extend made ff.dom functions ignore null arguments and handle the tabindex attribute correctly in Internet Explorer See the documentation for the ff.extend. Links: Download Documentation]]></description>
			<content:encoded><![CDATA[<p>The ff javascript library is now available in the version 1.11 which is a small maintainance update to version 1.1</p>
<p>Changes are: </p>
<ul>
<li>introduced ff.extend</li>
<li>made ff.dom functions ignore null arguments and handle the tabindex attribute correctly in Internet Explorer</li>
</ul>
<p>See the documentation for the ff.extend.</p>
<p><strong>Links:</strong><br /> 
<ul>
<li><a href="/static/files/ffjs-r1.11.zip">Download</a></li>
<li><a href="/ffjs/">Documentation</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/ff-javascript-library-update-to-111/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comments and SPAM</title>
		<link>http://fforw.de/post/comments-and-spam/</link>
		<comments>http://fforw.de/post/comments-and-spam/#comments</comments>
		<pubDate>Sun, 18 Mar 2007 18:00:33 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[notice]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=15</guid>
		<description><![CDATA[I did some work on the blog code so that you can now comment on posts without registering a user before. At first I tried allowing comments with only a user name and an email address, but faced SPAM comments very soon. Since I&#8217;m not really convinced that you are interested in ring tones, I [...]]]></description>
			<content:encoded><![CDATA[<p>I did some work on the blog code so that you can now comment on posts without registering a user before. </p>
<p>At first I tried allowing comments with only a user name and an email address, but faced SPAM comments very soon. Since I&#8217;m not really convinced that you are interested in ring tones, I also added some calculatory CAPTCHA test which will hopefully solve that issue ( You are allowed to cheat and use a calculator <img src='http://fforw.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/comments-and-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating JSP Layouts with Page Tags</title>
		<link>http://fforw.de/post/creating-jsp-layouts-with-page-tags/</link>
		<comments>http://fforw.de/post/creating-jsp-layouts-with-page-tags/#comments</comments>
		<pubDate>Sat, 03 Mar 2007 21:17:02 +0000</pubDate>
		<dc:creator>fforw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://blog.willie/?p=16</guid>
		<description><![CDATA[For some time now I&#8217;ve been following a new approach when creating the basic layout structure for JSP based web applications. The new approach is based on JSP 2.0 tag files and changes the way that the single pages are build up from reusable parts. The most common way to do so is to use [...]]]></description>
			<content:encoded><![CDATA[<p>For some time now I&#8217;ve been following a new approach when creating the basic layout structure for JSP based web applications. The new approach is based on <a href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPTags5.html">JSP 2.0 tag files</a> and changes the way that the single pages are build up from reusable parts.</p>
<hr width="100%" size="2" />
<p>The most common way to do so is to use included files with common blocks:</p>
<blockquote><p> &lt;%@include &#8220;head.inc&#8221;%> </p>
<p>&lt;b>page specific markup&lt;/b> </p>
<p> &lt;%@include &#8220;tail.inc&#8221;%></p></blockquote>
<p> Here the individual pages contain two or more includes which define the page start and end. Often navigation or sidebars or whatever are included in their own files. Changing the output of the title in the header e.g. requires passing data through the page scope or so.</p>
<p>My new approach defines the basic layout as <a href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPTags5.html">JSP 2.0 tag file</a>. Let&#8217;s take a look at an example: </p>
<blockquote><p><strong>&lt;%@tag description=&#8221;page layout&#8221; %><br />&lt;%@taglib prefix=&#8221;c&#8221; uri=&#8221;http://java.sun.com/jsp/jstl/core&#8221;%><br />&lt;%@attribute name=&#8221;head&#8221; fragment=&#8221;true&#8221;%><br />&lt;%@attribute name=&#8221;title&#8221; required=&#8221;true&#8221; type=&#8221;java.lang.String&#8221;%><br />&lt;%@attribute name=&#8221;script&#8221; required=&#8221;false&#8221; type=&#8221;java.lang.String&#8221;%><br />&lt;%@attribute name=&#8221;stylesheet&#8221; required=&#8221;false&#8221; type=&#8221;java.lang.String&#8221;%></strong><br />&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221; &#8220;http://www.w3.org/TR/html4/loose.dtd&#8221;><br />&lt;html><br />&lt;head><br />&lt;title>${title} &#8211; Page Tag Example&lt;/title><br />&lt;style type=&#8221;text/css&#8221;><br />    @import url(&#8220;<strong>&lt;c:url value=&#8221;/style/style.css&#8221;/></strong>&#8220;);<br /><strong>    &lt;c:forTokens var=&#8221;item&#8221; items=&#8221;${stylesheet}&#8221; delims=&#8221;,&#8221;></strong><br />    @import url(&#8220;<strong>&lt;c:url value=&#8221;/style/&#8221;/>${item}</strong>&#8220;);<br /><strong>    &lt;/c:forTokens>    </strong><br />&lt;/style></p>
<p><strong>&lt;c:forTokens var=&#8221;item&#8221; items=&#8221;${script}&#8221; delims=&#8221;,&#8221;></strong><br />&lt;script type=&#8221;text/javascript&#8221; src=&#8221;<strong>&lt;c:url value=&#8221;/script/&#8221;/>${item}</strong>&#8220;><br />&lt;/script><br /><strong>&lt;/c:forTokens>    </strong><br /><em><strong>&lt;jsp:invoke fragment=&#8221;head&#8221; /></strong></em><br />&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=UTF-8&#8243;><br />&lt;meta http-equiv=&#8221;Pragma&#8221; content=&#8221;no-cache&#8221;><br />&lt;/head><br />&lt;body><br />&lt;h1>Page Tag Example&lt;/h1><br />&lt;ul id=&#8221;nav&#8221;><br />  &lt;li>&lt;a href=&#8221;index.jsp&#8221;>Index&lt;/a>&lt;/li><br />  &lt;li>&lt;a href=&#8221;page1.jsp&#8221;>Page 1&lt;/a>&lt;/li><br />  &lt;li>&lt;a href=&#8221;page2.jsp&#8221;>Page 2&lt;/a>&lt;/li><br />&lt;/ul><br />&lt;div id=&#8221;content&#8221;><br /><em><strong>&lt;jsp:doBody /></strong></em><br />&lt;/div><br />  &lt;hr><br />  &lt;div id=&#8221;footer&#8221;><br />    &lt;a href=&#8221;http://validator.w3.org/check?uri=referer&#8221;>&lt;img<br />        src=&#8221;http://www.w3.org/Icons/valid-html401&#8243; border=&#8221;0&#8243;<br />        alt=&#8221;Valid HTML 4.01 Transitional&#8221; height=&#8221;31&#8243; width=&#8221;8&#8243;>&lt;/a><br />  &lt;/div><br />  &lt;/body><br />&lt;/html></p></blockquote>
<p>The tag defines the example page layout with a page header, a navigation and a footer. There are several attributes to control the page tag from inside the JSP page it is used in:</p>
<ul>
<li><em>head</em> &#8211; Fragment attribute used to add additional HTML markup to the head section of the page </li>
<li><em>title</em> &#8211; Required attribute which sets the page specific part of the page title</li>
<li><em>script</em> &#8211; Comma separated lists of script files to include from the /script directory</li>
<li><em>stylesheet</em> &#8211; Comma separated lists of style sheets to import from the /style directory</li>
</ul>
<p>The head fragment attribute demonstrates how to setup a <a href="http://java.sun.com/products/jsp/syntax/2.0/syntaxref208.html#997991">fragment attribute</a> which makes it possible to set HTML code as an attribute. To use such a fragment attribute inside a page you need to use the &lt;jsp:attribute> and &lt;jsp:body> tags:</p>
<blockquote><p>&lt;%@taglib tagdir=&#8221;/WEB-INF/tags&#8221; prefix=&#8221;example&#8221;%><br />&lt;example:page title=&#8221;Page 1&#8243;><br />&lt;jsp:attribute name=&#8221;head&#8221;><br />&lt;meta name=&#8221;author&#8221; content=&#8221;Sven Helmberger&#8221;><br />&lt;/jsp:attribute><br />&lt;jsp:body><br />Page 1 &#8211; demonstrates the use of the head fragment attribute<br />&lt;/jsp:body><br />&lt;/example:page></p></blockquote>
<p>If you only use normal (non-fragment) attributes you can leave out the &lt;jsp:attribute> and &lt;jsp:body> tags and specify the rest of the attributes like the title attribute above. Fragment attributes can also be useful to define common code blocks besides the tag body like a page-specific area in a sidebar or so.  </p>
<p>You can see that, even with fragment attributes complicating things, the page tag leads to a simple JSP code with high reuse and clear passing of data from the special page code to the common code.</p>
<ul>
<li><a href="/static/files/pagetag-webapp.zip" title="Source code for this blog entry">Download the pagetag example webapp</a>  </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fforw.de/post/creating-jsp-layouts-with-page-tags/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
