<?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>javathreads.de &#187; Facelets</title>
	<atom:link href="http://javathreads.de/tag/facelets/feed/" rel="self" type="application/rss+xml" />
	<link>http://javathreads.de</link>
	<description>Blog rund um Java und Web Entwicklung</description>
	<lastBuildDate>Wed, 02 Nov 2011 10:37:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eclipse Ganymede und das WTP Facelets Tools Project</title>
		<link>http://javathreads.de/2008/11/eclipse-ganymede-und-das-wtp-facelets-tools-project/</link>
		<comments>http://javathreads.de/2008/11/eclipse-ganymede-und-das-wtp-facelets-tools-project/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 11:30:25 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Eclipse WTP]]></category>
		<category><![CDATA[Facelets]]></category>
		<category><![CDATA[RichFaces Visual Editor]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=67</guid>
		<description><![CDATA[Wer sich f&#252;r JSF entschieden hat wird fr&#252;her oder sp&#228;ter nicht drum herum kommen Facelets einzusetzen. Meiner Meinung nach sind die Hauptfeatures von Facelets das einfache Erstellen von XHTML Seiten (ohne Facelets verwendet man JSP und ist eingeschr&#228;nkter in der Entwicklung von JSF Seiten) um den JSF Content unterzubringen, das Templating um generelle Layoutvorgaben vorzugeben [...]]]></description>
			<content:encoded><![CDATA[<p>Wer sich f&#252;r JSF entschieden hat wird fr&#252;her oder sp&#228;ter nicht drum herum kommen <a href="https://facelets.dev.java.net/">Facelets</a> einzusetzen. Meiner Meinung nach sind die Hauptfeatures von Facelets das einfache Erstellen von XHTML Seiten (ohne Facelets verwendet man JSP und ist eingeschr&#228;nkter in der Entwicklung von JSF Seiten) um den JSF Content unterzubringen, das Templating um generelle Layoutvorgaben vorzugeben oder auch nur Seitenteile auszulagern und das sehr einfache Erstellen von eigenen Tags. Das Konzept von Facelets wird wohl auch in die n&#228;chste JSF 2.0 Spezifikation einflie&#223;en.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/10/eclipseganymedejeebundledownloadlink.png" alt="" title="Eclipse Ganymede JEE Bundle" class="borderGray alignnone size-full wp-image-737" />
</div>
<p>Um &#8220;dynamische Webanwendungen&#8221; in Eclipse zu entwickeln wird das <a href="http://www.eclipse.org/webtools/">Web Tools Project</a> angeboten. Es bietet sich an <a href="http://www.eclipse.org/downloads/">Eclipse Ganymede im JEE Bundle</a> zu installieren um eine breite Toolunterst&#252;tzung rund um die Entwicklung von JSF Anwendungen zu erhalten. Was bisher lediglich fehlt ist die direkte Unterst&#252;tzung von Facelets innerhalb des WTP, was allerdings als Subprojekt mit dem Titel &#8220;<a href="http://wiki.eclipse.org/JSF_Facelets_Tools_Project">JSF Facelets Tools Project</a>&#8221; schon im <a href="http://www.eclipse.org/webtools/incubator/">WTP Incubator</a> verf&#252;gbar ist. Der WTP Incubator ist ein Projekt welches neue Projekte die dem WTP zugeordnet werden k&#246;nnen f&#246;rdert bevor sie ein offizieller Teil des Web Tools Project (WTP) werden.</p>
<p>Nun genug der Theorie rund um das WTP und zum eigentlichen Thema: das JSF Facelets Tools Project.<br />
Mit diesem Subprojekt zu dem WTP kommt eine direkte Facelets Tool Unterst&#252;tzung in Eclipse zum Einsatz und vereinfacht die Entwicklung. Welche Vorteile das Projekt bringt und wie es im Live Einsatz aussieht wird wunderbar in dem Eclipse Webinar &#8220;<a href="http://live.eclipse.org/node/483">Building Facelets Applications with the JSF Tools for Eclipse</a>&#8221; auf Eclipse Live gezeigt. In dem dem Webinar wird die aktuelle Eclipse Version 3.4 (Ganymede) verwendet.</p>
<div class="singleImgDiv">
<a href="http://live.eclipse.org/node/483"><img src="http://javathreads.de/data/uploads/2008/11/eclipsewebinar_faceletstools.jpg" alt="" title="Eclipse Webinar - Facelets Tools" class="borderGray alignnone size-full wp-image-827" /></a>
</div>
<p>In diesem Webinar werden unter anderem folgende Themen behandelt:</p>
<ul>
<li>Templates</li>
<li>Validierung direkt in der .xhtml Seite</li>
<li>Link Support von der EL zu dem Attribut oder Methode der Bean</li>
<li>Auto-Completeion von Standard aber auch eigenen Faceletes Tags</li>
<li>Component Tree (Komponentenbaum) View der xhtml Seite</li>
<li>Tag Registry &#8211; kennt auch alle Facelets Tags</li>
</ul>
<p>Mehr &#252;ber das Projekt erf&#228;hrt man auf dem Facelets Tools Wiki: <a href="http://wiki.eclipse.org/JSF_Facelets_Tools_Project">http://wiki.eclipse.org/JSF_Facelets_Tools_Project</a></p>
<p>In dem Webinar werden auch Eclipse Views und Tools gezeigt, die mit WTP 3.0 Einzug erhalten haben. Darunter ist z.B. die JSF Component Tree View zu sehen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/11/eclipsewtp_jsfcomponenttreeview.png" alt="" title="Eclipse WTP 3.0.0 - JSF Component Tree View" class="borderGray alignnone size-full wp-image-828" />
</div>
<p>Oder auch die im Web Page Editor verf&#252;gbare Unterst&#252;tzung f&#252;r die JSF Expression Language die eine Unterst&#252;tzung f&#252;r die im Context verf&#252;gbaren Objekte bietet:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/11/eclipsewtp_elcontentassistpng.jpg" alt="" title="Eclipse WTP 3.0.0 - JSF EL Content Assist" class="borderGray alignnone size-full wp-image-829" />
</div>
<p>Was noch neu in <a href="http://www.eclipse.org/webtools/">WTP 3.0</a> Einzug erhalten kann man auch wie immer auf der <a href="http://www.eclipse.org/webtools/releases/3.0.0/newandnoteworthy/jsf.php">Eclipse Web Tools Platform 3.0 &#8211; New and Noteworthy</a> Seite mit vielen Screenshot sehen.</p>
<p>So wie ich das jetzt sehe kann man das JSF Facelets Tools Project lediglich aus dem SVN auschecken. Somit besteht bisher keine wirklich einfache M&#246;glichkeit diese Unterst&#252;tzung zu verwenden.<br />
Eine sehr gute Alternative f&#252;r die Entwicklung von xhtml Facelets Seiten besteht durch den <a href="http://javathreads.de/2008/06/jboss-tools-visual-editor-fuer-jsf-richfaces-und-facelets/">Visual Page Editor</a> aus der JBoss Tools Palette. Entwickelt man mit Eclipse Ganymede kann man sich diesen sehr einfach durch die <a href="http://javathreads.de/2008/10/jboss-tools-nightly-build-update-seite/">Update Seite des Nightly Builds</a> installieren.</p>
<p>Insgesamt ist das JSF Tools Project sehr vielversprechend und man darf gespannt sein wann es in das offizielle WTP Projekt eingebunden wird.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2008/11/eclipse-ganymede-und-das-wtp-facelets-tools-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Die wichtigsten UTF-8/Unicode Sonderzeichen f&#252;r die Entwicklung mit Facelets</title>
		<link>http://javathreads.de/2008/10/die-wichtigsten-utf-8unicode-sonderzeichen-fuer-die-entwicklung-mit-facelets/</link>
		<comments>http://javathreads.de/2008/10/die-wichtigsten-utf-8unicode-sonderzeichen-fuer-die-entwicklung-mit-facelets/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 15:00:21 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Facelets]]></category>
		<category><![CDATA[Unicode]]></category>
		<category><![CDATA[UTF-8]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=561</guid>
		<description><![CDATA[Arbeitet man mit Facelets kann man nicht einfach mal ein Umlaut oder Sonderzeichen als Text ausgeben wie man es noch in einer JSP konnte. Zudem kann man auch sogenannte named entities wie z.B. &#38;ouml; f&#252;r ein &#8216;&#246;&#8217;, &#38;amp; f&#252;r ein &#8216;&#038;&#8217; oder ein &#38;nbsp; f&#252;r ein &#8216;non breaking space&#8217; verwenden weil Facelets diese entities nicht [...]]]></description>
			<content:encoded><![CDATA[<p>Arbeitet man mit <a href="https://facelets.dev.java.net/">Facelets</a> kann man nicht einfach mal ein Umlaut oder Sonderzeichen als Text ausgeben wie man es noch in einer JSP konnte. Zudem kann man auch sogenannte named entities wie z.B. <span class="code">&amp;ouml;</span> f&#252;r ein &#8216;&#246;&#8217;, <span class="code">&amp;amp;</span> f&#252;r ein &#8216;&#038;&#8217; oder ein <span class="code">&amp;nbsp;</span> f&#252;r ein &#8216;non breaking space&#8217; verwenden weil Facelets diese entities nicht von der Behandlung ausnimmt.</p>
<p>Die L&#246;sung hei&#223;t <strong>Unicode in Html</strong> zu verwenden. Im folgenden sind die meiner Meinung nach wichtigsten bzw. h&#228;ufigst ben&#246;tigsten Unicode Zeichen aufgelistet:</p>
<table class="tableList" style="width: 100%">
<tr>
<td class="tableListHeadline">Unicode</td>
<td class="tableListHeadline">UTF-8</td>
<td class="tableListHeadline" style="text-align:center">Zeichen</td>
<td class="tableListHeadline">Beschreibung</td>
<tr>
<tr>
<td class="tableListTdDesc">&amp;#160;</td>
<td class="tableListTdDesc">\u00A0</td>
<td class="tableListTdText" style="text-align:center">&#160;</td>
<td class="tableListTdText">&#8220;Non Breaking Space&#8221; &#8211; ein erzwungenes Leerzeichen.</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#38;</td>
<td class="tableListTdDesc">\u0026</td>
<td class="tableListTdText" style="text-align:center">&#38;</td>
<td class="tableListTdText">Ampersand-Zeichen, kaufm&#228;nnisches Und.</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#60;</td>
<td class="tableListTdDesc">\u003C</td>
<td class="tableListTdText" style="text-align:center">&#60;</td>
<td class="tableListTdText">&#246;ffnende spitze Klammer (kleiner)</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#62;</td>
<td class="tableListTdDesc">\u003E</td>
<td class="tableListTdText" style="text-align:center">&#62;</td>
<td class="tableListTdText">schlie&#223;ende spitze Klammer (gr&#246;&#223;er).</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#228;</td>
<td class="tableListTdDesc">\u00E4</td>
<td class="tableListTdText" style="text-align:center">&#228;</td>
<td class="tableListTdText">Umlaut klein: &#228;</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#196;</td>
<td class="tableListTdDesc">\u00C4</td>
<td class="tableListTdText" style="text-align:center">&#196;</td>
<td class="tableListTdText">Umlaut gro&#223;: &#196;</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#246;</td>
<td class="tableListTdDesc">\u00F6</td>
<td class="tableListTdText" style="text-align:center">&#246;</td>
<td class="tableListTdText">Umlaut klein: &#246;</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#214;</td>
<td class="tableListTdDesc">\u00D6</td>
<td class="tableListTdText" style="text-align:center">&#214;</td>
<td class="tableListTdText">Umlaut gro&#223;: &#214;</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#252;</td>
<td class="tableListTdDesc">\u00FC</td>
<td class="tableListTdText" style="text-align:center">&#252;</td>
<td class="tableListTdText">Umlaut klein: &#252;</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#220;</td>
<td class="tableListTdDesc">\u00DC</td>
<td class="tableListTdText" style="text-align:center">&#220;</td>
<td class="tableListTdText">Umlaut gro&#223;: &#220;</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#223;</td>
<td class="tableListTdDesc">\u00df</td>
<td class="tableListTdText" style="text-align:center">&#223;</td>
<td class="tableListTdText"> scharfes S: &#223;</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#8364;</td>
<td class="tableListTdDesc">\u20AC</td>
<td class="tableListTdText" style="text-align:center">&#8364;</td>
<td class="tableListTdText">Euro W&#228;hrungszeichen</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#36;</td>
<td class="tableListTdDesc">\u0024</td>
<td class="tableListTdText" style="text-align:center">&#36;</td>
<td class="tableListTdText">Dollar W&#228;hrungszeichen</td>
</tr>
<tr>
<td class="tableListTdDesc">&amp;#163;</td>
<td class="tableListTdDesc">\u00A3</td>
<td class="tableListTdText" style="text-align:center">&#163;</td>
<td class="tableListTdText">Pfund W&#228;hrungszeichen</td>
</tr>
</table>
<p>Vor allem das &#8220;Non Breaking Space&#8221; Unicode &#8216;<span class="code">&amp;#160;</span>&#8216; kann ich mir mittlerweile so merken weil man es doch immer direkt in der <span class="code">.xhtml</span> Seite ben&#246;tigt. Mehr Sonderzeichen als die hier aufgelisteten ben&#246;tige ich aber eigentlich nie, denn in der Regel laufen alle Texte &#252;ber ein Message Resource Bunde.</p>
<p>In einer normalen JSF Anwendung definiert man das Message Resource Bundle in der <span class="code">faces-config.xml</span> und die Variable &#252;ber die man auf die Texte in der <span class="code">.jsf</span> Seite zugreift mit Hilfe des Tags <span class="code">f:loadBundle</span>.</p>
<p>In einem generiertem JBoss Seam Projektist dieses Message Resource Bundle per default unter der Variable <span class="code">messages</span> zu finden. Ausgeben kann man somit einen Text, der in dem Resource Bundle z.B. unter dem key <span class="code">my.custom.text=Hello World &#220;berschrift</span> zu finden ist, ohne weiteres zutun mit <span class="code">#{messages['my.custom.text']}</span>.</p>
<p>Aber Message Resources und Lokalisierung ist wieder ein anderes Thema..</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2008/10/die-wichtigsten-utf-8unicode-sonderzeichen-fuer-die-entwicklung-mit-facelets/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Unterst&#252;tzung der Fehleranalyse bei der Entwicklung von JSF Anwendungen</title>
		<link>http://javathreads.de/2008/05/unterstuetzung-der-fehleranalyse-bei-der-entwicklung-von-jsf-anwendungen/</link>
		<comments>http://javathreads.de/2008/05/unterstuetzung-der-fehleranalyse-bei-der-entwicklung-von-jsf-anwendungen/#comments</comments>
		<pubDate>Mon, 12 May 2008 20:34:58 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Facelets]]></category>
		<category><![CDATA[FacesTrace]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=51</guid>
		<description><![CDATA[Wenn eine JSF Anwendung entwickelt wird liegt dem Entwickler viel daran mitzubekommen an welchen Stellen es hakt oder was f&#252;r Daten bei einem Fehlerfall denn gerade in dem Request oder der Session liegen. So ist oft der erste Schritt das Einrichten von Log4J oder einer anderen Logging Engine um zumindest schon mal mitzubekommen welche Wege [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn eine JSF Anwendung entwickelt wird liegt dem Entwickler viel daran mitzubekommen an welchen Stellen es hakt oder was f&#252;r Daten bei einem Fehlerfall denn gerade in dem Request oder der Session liegen. So ist oft der erste Schritt das Einrichten von Log4J oder einer anderen Logging Engine um zumindest schon mal mitzubekommen welche Wege durchlaufen werden. Setzt man dann noch erweiternde Frameworks ein, welche eine bessere Fehleranalyse unterst&#252;tzen, so kann man in der Entwicklung von JSF Anwendungen sehr gut unterst&#252;tzt werden. Zwei solcher n&#252;tzlichen JSF Erweiterungen sind Facelets und FacesTrace, worauf im folgenden kurz eingegangen werden soll.</p>
<div class="subHeadline">Facelets</div>
<p>Neben den vielen Vorteilen die <a href="https://facelets.dev.java.net/">Facelets</a> mit sich bringt (Templating, Custom Tags, Html Unterst&#252;tzung, &#8230;) bietet es auch eine verbesserte Fehleraufbereitung und zeigt bei Exceptions eine neue detailliertere Fehlerseite.<br />
Auf dieser wird der Name der Exception bzw. die Ursache samt Zeilennummer des Aufrufs in der xhtml Seite dargestellt. Zudem werden s&#228;mtliche existierende Key/Value Paare aus allen Context Variablen und der JSF Komponentenbaum aufgelistet. Im folgenden Screenshot ist eine solche Fehlermeldung Fehlerseite im Aufbau zu sehen.</p>
<div class="singleImgDiv" style="border: 1px solid #AAAAAA"><img src='http://javathreads.de/files/080512_FaceletsErrorPage1.png' alt='Facelets Error Page' class='alignnone'/></div>
<p>Auf den ersten Blick sieht man, dass in der Backing Bean LatestWishesCarouselBB in der Methode getCurrentViewedWishes() die Exception geschmissen wurde. Im Stacktrace ist dann zu erkennen, dass der Grund der Exception eine NullPointerException war.</p>
<div class="codebox">
<pre><span style="color: #000000; ">Caused by: java.lang.NullPointerException
    at com.openwishes.presentation.bb.LatestWishesCarouselBB
           .getCurrentViewedWishes(LatestWishesCarouselBB.java:</span><span style="color: #000000; ">294</span><span style="color: #000000; ">)</span></pre>
</div>
<p>Da Facelets valides xhtml verlangt sieht auch diese Fehlermeldung entsprechend aus.</p>
<div class="singleImgDiv" style="border: 1px solid #AAAAAA"><img src='http://javathreads.de/files/080512_FaceletsErrorPage2.png' alt='Facelets Error Page' class='alignnone'/></div>
<p>Insgesamt kann man sagen, dass durch Facelets die Fehleranalyse deutlich vereinfacht wurde. Man kann auf den ersten Blick die Ursache erkennen und weitere Informationen einholen.</p>
<p>Die Faclets Fehlerseite muss man nicht direkt konfigurieren sondern wird automatisch durch das Einbinden von Facelets als View Hanlder verwendet.</p>
<div class="codebox">
<pre><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">faces-config</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">application</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">view-handler</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
      com.sun.facelets.FaceletViewHandler
    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">view-handler</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">application</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">faces-config</span><span style="color: #0000FF; ">&gt;</span></pre>
</div>
<p>Mehr zum Einbinden von Facelets auch im <a href="https://facelets.dev.java.net/nonav/docs/dev/docbook.html#gettingstarted-setup">Faclets Wiki</a>.</p>
<div class="subHeadline">FacesTrace</div>
<p>N&#252;tzlich ist jedoch auch eine Analyse im Positiv-Fall, so dass man verschiedene Dinge analysieren kann. An dieser Stelle kommt <a href="http://facestrace.sourceforge.net">FacesTrace</a> ins Spiel.</p>
<p>FacesTrace ist ein &#8220;Tracing-Tool&#8221;, welches auf die Entwicklung von JSF Anwendungen zugeschnitten ist. So werden die sechs Phasen visuell dargestellt und und es ist die Ausf&#252;hrungsdauer der einzelnen Phase zu erkennen. Der folgende Screenshot zeigt, wie in der Phase &#8220;Validation&#8221; ein Fehler aufgetreten ist und anschlie&#223;end direkt in die Phase &#8220;Render Response&#8221; gesprungen wird um Eingabemaske wieder darzustellen. Neben der visuellen Darstellung werden alle s&#228;mtlich verf&#252;gbaren Variablen die z.b. in dem Request, Session  oder im Cookie verf&#252;gbar sind.</p>
<div class="singleImgDiv" style="border: 1px solid #AAAAAA"><img src='http://javathreads.de/files/080512_FacesTrace.jpg' alt='FacesTrace' class='alignnone'/></div>
<p>FacesTrace bietet somit einiges an n&#252;tzichen <a href="http://facestrace.sourceforge.net/main/features.html">Features</a>, welche sehr der Analyse dienen. Als Features werden auf der FacesTrace seite folgende Punkte genannt:</p>
<ul>
<li style="margin-bottom: 5px;">Performance Tracker<br/>Die Dauer einer Phase wird gemessen und in den einzelnen Phasen angezeigt.</li>
<li style="margin-bottom: 5px;">Lifecycle Tracker<br/>Der JSF Lebenszyklus wird visuell dargestellt, wobei der Zustand einer Phase in verschiedenen Farben angezeigt wird. Gr&#252;n: Phase wurde durchlaufen. Rot: Ein Fehler ist in dieser Phase aufgetretet. Grau: Phase wurde nicht durchlaufen.<br/></li>
<li style="margin-bottom: 5px;">Variables<br/>Alle &#8220;Key-Value&#8221; Paare aus jedem verf&#252;gbaren Scope (Request, Session, Params, ..) werden aufgelistet<br/></li>
<li style="margin-bottom: 5px;">Faces Messages<br/>Wenn Nachrichten (FacesMessages) im FacesContext verf&#252;gbar sind werden sie aufgelistet.<br/></li>
<li style="margin-bottom: 5px;">Logs<br/>Mit FacesTrace ist es m&#246;glich die Log4J Ausgaben auf der Seite darzustellen. FacesTrace bringt einen eigenen Appender mit.<br/></li>
<li>JSF Component Tree<br/>Der Komponentenbaum der Seite wird dargestellt.</li>
</ul>
<p>Um FacesTrace zu nutzen muss es nat&#252;rlich noch konfiguriert werden. Das gestaltet sich aber relativ einfach, wie auch im Abschnitt <a href="http://facestrace.sourceforge.net/main/setup.html">Setup</a> auf der <a href="http://facestrace.sourceforge.net">FacesTrace Homepage</a> zu lesen ist. Die FacesTrace Tag Library wird im FacesTrace.jar mitgeliefert und von Facelets automatisch gefunden. Man muss lediglich den Namespace &#8220;xmlns:ft=&#8217;http://facestrace.sourceforge.net&#196;&#8217;&#8221; in einer xhtml Seite deklarieren:</p>
<div class="codebox">
<pre><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">html </span><span style="color: #FF0000; ">xmlns</span><span style="color: #0000FF; ">=&quot;http://www.w3.org/1999/xhtml&quot;</span><span style="color: #FF0000; ">
      xmlns:h</span><span style="color: #0000FF; ">=&quot;http://java.sun.com/jsf/html&quot;</span><span style="color: #FF0000; ">
      xmlns:f</span><span style="color: #0000FF; ">=&quot;http://java.sun.com/jsf/core&quot;</span><span style="color: #FF0000; ">
      xmlns:ui</span><span style="color: #0000FF; ">=&quot;http://java.sun.com/jsf/facelets&quot;</span><span style="color: #FF0000; ">
      xmlns:ft</span><span style="color: #0000FF; ">=&quot;http://facestrace.sourceforge.net&quot;</span><span style="color: #0000FF; ">&gt;</span></pre>
</div>
<p>Die FacesTrace Komponente kann dann an einer beliebigen Stelle auf der Seite platziert werden:</p>
<div class="codebox">
<pre><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">ft:trace </span><span style="color: #0000FF; ">/&gt;</span></pre>
</div>
<p>M&#246;chte man FacesTrace ausschalten so kann man das &#252;ber einen Context Parameter in der web.xml steuern:</p>
<div class="codebox">
<pre><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">context-param</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">com.prime.facestrace.DISABLE_TRACE</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
  </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">true or false</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">context-param</span><span style="color: #0000FF; ">&gt;</span></pre>
</div>
<p>Wie man bequem die web.xml f&#252;r verschiedene Umgebungen anpassen kann und somit das Ein- und Ausschalten von FacesTrace nicht immer manuell um&#228;ndern muss ist auf <a href="http://sophisticated-it.de/index.php/2007/09/23/webxml-deployment-deskriptor-mit-xslt-an-verschiedene-umgebungen-anpassen/">sophisticated-it</a> zu lesen. Dort wird beschrieben wie man mit XSLT verschiedene Konfigurationen dynamisch zusammenbauen kann. Bei <a href="http://openwishes.de/">OpenWishes</a> hat sich dieses Vorgehen bereits bew&#228;hrt, so dass wir mit einer web.xml zwischen Lokaler-, Test- und Produktivumgebung ohne Probleme umschalten k&#246;nnen.</p>
<p>Auch ohne das dynamische Anpassen der web.xml ist FacesTrace sehr einfach einzubinden und zu verwenden.<br />
Die Kombination zwischen <a href="https://facelets.dev.java.net/">Facelets</a> und <a href="http://facestrace.sourceforge.net">FacesTrace</a> bietet einen wirklichen Mehrwert bei der Entwicklung einer JSF Anwendung und vereinfacht die Fehleranalyse doch erheblich.</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2008/05/unterstuetzung-der-fehleranalyse-bei-der-entwicklung-von-jsf-anwendungen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

