<?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>lost in thought &#187; Java</title>
	<atom:link href="http://joachim.weinbrenner.name/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://joachim.weinbrenner.name</link>
	<description>random thoughts from Joachim Weinbrenner</description>
	<lastBuildDate>Mon, 02 May 2011 12:15:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ausdrücke mit der ScriptEngine auswerten</title>
		<link>http://joachim.weinbrenner.name/2011/05/02/ausdrucke-mit-der-scriptengine-auswerten/</link>
		<comments>http://joachim.weinbrenner.name/2011/05/02/ausdrucke-mit-der-scriptengine-auswerten/#comments</comments>
		<pubDate>Mon, 02 May 2011 12:12:10 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=322</guid>
		<description><![CDATA[Immer wieder nützlich: die ScriptEngine in Java (oder auch in Groovy) ermöglicht das einfache Auswerten von Ausdrücken. Hier ein kleines Beispiel (in Groovy, lässt sich aber mit minimaler Anpassung in Java umsetzen (Cast in Zeile 7 und Alternative Ausgabe in Zeile 8)): 1 2 3 4 5 6 7 8 9 10 11 import javax.script.ScriptEngineManager; [...]]]></description>
			<content:encoded><![CDATA[<p>Immer wieder nützlich: die <a href="http://download.oracle.com/javase/6/docs/api/javax/script/package-summary.html" target="_blank">ScriptEngine</a> in Java (oder auch in Groovy) ermöglicht das einfache Auswerten von Ausdrücken. Hier ein kleines Beispiel (in Groovy, lässt sich aber mit minimaler Anpassung in Java umsetzen (Cast in Zeile 7 und Alternative Ausgabe in Zeile 8)):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.script.ScriptEngineManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.script.ScriptEngine</span><span style="color: #339933;">;</span>
&nbsp;
ScriptEngineManager mgr <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ScriptEngineManager<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ScriptEngine jsEngine <span style="color: #339933;">=</span> mgr.<span style="color: #006633;">getEngineByName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;JavaScript&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">Boolean</span> result <span style="color: #339933;">=</span> jsEngine.<span style="color: #006633;">eval</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;a=19; b=2; c=2; a&gt;b &amp;&amp; c==b&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  print <span style="color: #0000ff;">&quot;Ergebnis: &quot;</span> <span style="color: #339933;">+</span> result<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>ScriptException ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    ex.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>In diesem Fall wird <em>Ergebnis: true</em> auf der Konsole ausgegeben. Dies nur zur Inspiration &#8211; die Vielfalt der Möglichkeiten lässt sich nun bestimmt schon erahnen &#8230;</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Ausdr%C3%BCcke%20mit%20der%20ScriptEngine%20auswerten&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2011%2F05%2F02%2Fausdrucke-mit-der-scriptengine-auswerten%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2011/05/02/ausdrucke-mit-der-scriptengine-auswerten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven Jetty Port einstellen</title>
		<link>http://joachim.weinbrenner.name/2011/02/07/maven-jetty-port-einstellen/</link>
		<comments>http://joachim.weinbrenner.name/2011/02/07/maven-jetty-port-einstellen/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 21:26:32 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=310</guid>
		<description><![CDATA[Nachdem ich nun schon mehrmals nachschlagen musste, schreibe ich es hier als &#8220;Merkzettel&#8221; auf: Was muss man in die pom.xml schreiben, damit Jetty bei mvn jetty:run auf einem gewünschten Port startet (im Beispiel 8088). Darüber hinaus soll die Applikation direkt im Webroot verfügbar sein. Folgender &#8220;POM-Schnipsel&#8221; erledigt dies: &#60;plugin&#62; &#60;groupId&#62;org.mortbay.jetty&#60;/groupId&#62; &#60;artifactId&#62;maven-jetty-plugin&#60;/artifactId&#62; &#60;configuration&#62; &#60;scanIntervalSeconds&#62;10&#60;/scanIntervalSeconds&#62; &#60;connectors&#62; &#60;connector [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich nun schon mehrmals nachschlagen musste, schreibe ich es hier als &#8220;Merkzettel&#8221; auf: Was muss man in die <em>pom.xml</em> schreiben, damit Jetty bei <em>mvn jetty:run</em> auf einem gewünschten Port startet (im Beispiel 8088). Darüber hinaus soll die Applikation direkt im Webroot verfügbar sein. Folgender &#8220;POM-Schnipsel&#8221; erledigt dies:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.mortbay.jetty<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-jetty-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scanIntervalSeconds<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>10<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scanIntervalSeconds<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;connectors<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;connector</span> <span style="color: #000066;">implementation</span>=<span style="color: #ff0000;">&quot;org.mortbay.jetty.nio.SelectChannelConnector&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>8088<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/connector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/connectors<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;webAppConfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;contextPath<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/contextPath<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/webAppConfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Die Anwendung sollte nun unter http://localhost:8088/ verfügbar sein.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Maven%20Jetty%20Port%20einstellen&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2011%2F02%2F07%2Fmaven-jetty-port-einstellen%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2011/02/07/maven-jetty-port-einstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prime-Time! Artikel im KaffeeKlatsch</title>
		<link>http://joachim.weinbrenner.name/2011/01/29/prime-time-artikel-im-kaffeeklatsch/</link>
		<comments>http://joachim.weinbrenner.name/2011/01/29/prime-time-artikel-im-kaffeeklatsch/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 11:26:39 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PrimeFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=306</guid>
		<description><![CDATA[Der neue KaffeeKlatsch (Das Magazin rund um Software-Entwicklung) ist da. Der KaffeeKlatsch kommt monatlich als PDF und kann kostenlos per E-Mail abonniert werden. Diesmal findet ihr darin auch meinen Artikel zur JSF-Komponentenbibliothek PrimeFaces. Viel Spaß beim Lesen.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-307" title="kaffeeklatsch" src="http://joachim.weinbrenner.name/wp-content/uploads/kaffeeklatsch.jpg" alt="KaffeeKlatsch" width="200" height="37" />Der neue <a href="http://www.bookware.de/kaffeeklatsch/intro" target="_blank">KaffeeKlatsch</a> (Das Magazin rund um Software-Entwicklung) ist da. Der KaffeeKlatsch kommt monatlich als PDF und kann kostenlos per E-Mail abonniert werden.</p>
<p>Diesmal findet ihr darin auch meinen Artikel zur JSF-Komponentenbibliothek <a title="PrimeFaces" href="http://www.primefaces.org/" target="_blank">PrimeFaces</a>. Viel Spaß beim Lesen.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Prime-Time%21%20Artikel%20im%20KaffeeKlatsch&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2011%2F01%2F29%2Fprime-time-artikel-im-kaffeeklatsch%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2011/01/29/prime-time-artikel-im-kaffeeklatsch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Folien &#8220;Der lachende Dritte&#8221;</title>
		<link>http://joachim.weinbrenner.name/2010/09/18/folien-der-lachende-dritte/</link>
		<comments>http://joachim.weinbrenner.name/2010/09/18/folien-der-lachende-dritte/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 21:14:33 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[IceFaces]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[PrimeFaces]]></category>
		<category><![CDATA[RichFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=299</guid>
		<description><![CDATA[Jetzt können meine Folien vom Vortrag beim Herbstcampus 2010 letzten Montag online betrachtet werden: Der lachende Dritte]]></description>
			<content:encoded><![CDATA[<p>Jetzt können meine Folien vom <a href="http://www.herbstcampus.de/hc10/program/sessions.html#5" target="_blank">Vortrag beim Herbstcampus 2010</a> letzten Montag online betrachtet werden:</p>
<div style="width:425px" id="__ss_5230446"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/joachimweinbrenner/der-lachende-dritte" title="Der lachende Dritte">Der lachende Dritte</a></strong><object id="__sse5230446" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=derlachendedritte-100918154211-phpapp02&#038;stripped_title=der-lachende-dritte&#038;userName=joachimweinbrenner" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse5230446" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=derlachendedritte-100918154211-phpapp02&#038;stripped_title=der-lachende-dritte&#038;userName=joachimweinbrenner" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Folien%20%26%238220%3BDer%20lachende%20Dritte%26%238221%3B&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F09%2F18%2Ffolien-der-lachende-dritte%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/09/18/folien-der-lachende-dritte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java 4-Ever</title>
		<link>http://joachim.weinbrenner.name/2010/06/29/java-4-ever/</link>
		<comments>http://joachim.weinbrenner.name/2010/06/29/java-4-ever/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 19:44:48 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=294</guid>
		<description><![CDATA[Einfach genial, das bedarf keines weiteren Kommentars!]]></description>
			<content:encoded><![CDATA[<p>Einfach genial, das bedarf keines weiteren Kommentars!<br />
<object width="500" height="304"><param name="movie" value="http://www.youtube.com/v/A1zySeNpW20&#038;hl=de_DE&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/A1zySeNpW20&#038;hl=de_DE&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="304"></embed></object></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Java%204-Ever&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F06%2F29%2Fjava-4-ever%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/06/29/java-4-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vortrag auf dem Herbstcampus 2010</title>
		<link>http://joachim.weinbrenner.name/2010/06/14/vortrag-auf-dem-herbstcampus-2010/</link>
		<comments>http://joachim.weinbrenner.name/2010/06/14/vortrag-auf-dem-herbstcampus-2010/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 19:30:52 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[IceFaces]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[PrimeFaces]]></category>
		<category><![CDATA[RichFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=288</guid>
		<description><![CDATA[Es freut mich sehr, dass ich auf dem kommenden Herbstcampus 2010 einen Vortrag halten darf. Ich werde die drei bekannten AJAX-JSF Frameworks PrimeFaces, RichFaces und IceFaces unter die Lupe nehmen und vergleichen. Der Vortrag &#8220;Der lachende Dritte? &#8211; PrimeFaces im Vergleich zu RichFaces und IceFaces&#8221; findet am Montag, 13. 9., 11:20 – 12:30 Uhr statt. Gespannt bin ich [...]]]></description>
			<content:encoded><![CDATA[<p>Es freut mich sehr, dass ich auf dem kommenden Herbstcampus 2010 einen Vortrag halten darf. Ich werde die drei bekannten AJAX-JSF Frameworks <a href="http://www.primefaces.org/" target="_blank">PrimeFaces</a>, <a href="http://www.jboss.org/richfaces" target="_blank">RichFaces</a> und <a href="http://www.icefaces.org/main/home/" target="_blank">IceFaces</a> unter die Lupe nehmen und vergleichen.</p>
<p>Der Vortrag <strong>&#8220;Der lachende Dritte? &#8211; PrimeFaces im Vergleich zu RichFaces und IceFaces&#8221;</strong> findet am Montag, 13. 9., 11:20 – 12:30 Uhr statt.</p>
<p>Gespannt bin ich auch auf das umfangreiche Konferenzprogramm mit zahlreichen interessanten Vorträgen und Referenten. Ausführliche Informationen zur Konferenz findet man unter <a href="http://www.herbstcampus.de/hc10/index.html" target="_blank">http://www.herbstcampus.de/hc10/index.html</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Vortrag%20auf%20dem%20Herbstcampus%202010&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F06%2F14%2Fvortrag-auf-dem-herbstcampus-2010%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/06/14/vortrag-auf-dem-herbstcampus-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problem: rich:editor eingebettet in rich:modalPanel</title>
		<link>http://joachim.weinbrenner.name/2010/04/22/problem-richeditor-eingebettet-in-richmodalpanel/</link>
		<comments>http://joachim.weinbrenner.name/2010/04/22/problem-richeditor-eingebettet-in-richmodalpanel/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 19:18:12 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[RichFaces]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=280</guid>
		<description><![CDATA[Mal wieder so eine kleine Sache, an der man unnötig hängen bleibt und auf deren Lösung man ohne googeln kaum kommen kann. Ausgangsstellung: Ich hatte in meiner JSF-Oberfläche mit RichFaces einen modalen Dialog eingebaut, der unter anderem einen Editor enthalten soll. Eigentlich ganz easy, nichts besonderes. Der Code sah vereinfacht und gekürzt in etwa so [...]]]></description>
			<content:encoded><![CDATA[<p>Mal wieder so eine kleine Sache, an der man unnötig hängen bleibt und auf deren Lösung man ohne googeln kaum kommen kann.</p>
<p>Ausgangsstellung: Ich hatte in meiner JSF-Oberfläche mit <a href="http://www.jboss.org/richfaces" target="_blank">RichFaces</a> einen modalen Dialog eingebaut, der unter anderem einen Editor enthalten soll. Eigentlich ganz easy, nichts besonderes. Der Code sah vereinfacht und gekürzt in etwa so aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rich:modalPanel</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;editpanel&quot;</span> <span style="color: #000066;">autosized</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h:form<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		... (andere Komponenten) ...
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rich:editor</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;editor&quot;</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;400&quot;</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;100&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;#{myBean.dialogBeschreibung}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a4j:commandButton</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Speichern&quot;</span> <span style="color: #000066;">action</span>=<span style="color: #ff0000;">&quot;#{myBean.dialogSpeichern}&quot;</span> </span>
<span style="color: #009900;">			<span style="color: #000066;">oncomplete</span>=<span style="color: #ff0000;">&quot;#{rich:component('editpanel')}.hide();&quot;</span> <span style="color: #000066;">reRender</span>=<span style="color: #ff0000;">&quot;treepanel&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a4j:commandButton</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Abbrechen&quot;</span></span>
<span style="color: #009900;">			<span style="color: #000066;">onclick</span>=<span style="color: #ff0000;">&quot;#{rich:component('editpanel')}.hide();return false;&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h:form<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rich:modalPanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Eigentlich alles ok, oder? Also gut, &#8216;mvn tomcat:redeploy&#8217; &#8230; ein bisschen einwirken lassen &#8230; Firefox auf, testen. Der Dialog springt sofort auf, aber der Editor ist tot, nicht mal den Cursor kriegt man zum blinken. Und auch der &#8216;Speichern&#8217;-Knopf zeigt keine Reaktion.</p>
<p>Die Lösung (besser: den Workaround) liefert JBoss.org Issue <a href="https://jira.jboss.org/jira/browse/RF-7477" target="_blank">RF-7477</a> bzw <a href="https://jira.jboss.org/jira/browse/RF-5268" target="_blank">RF-5268</a>: Im modalPanel ist domElementAttachment=&#8221;parent&#8221; zu setzen. Zeile 1 von oben sieht dann also so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rich:modalPanel</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;editpanel&quot;</span> <span style="color: #000066;">domElementAttachment</span>=<span style="color: #ff0000;">&quot;parent&quot;</span> <span style="color: #000066;">autosized</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre></div></div>

<p>Was lernt man daraus? Keine Ahnung, wohl das was wir schon oft gelernt haben: &#8220;Kaum macht mans richtig, schon gehts &#8230;&#8221;</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Problem%3A%20rich%3Aeditor%20eingebettet%20in%20rich%3AmodalPanel&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F04%2F22%2Fproblem-richeditor-eingebettet-in-richmodalpanel%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/04/22/problem-richeditor-eingebettet-in-richmodalpanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UMLGraph in Javadoc mit Maven</title>
		<link>http://joachim.weinbrenner.name/2010/03/29/umlgraph-in-javadoc-mit-maven/</link>
		<comments>http://joachim.weinbrenner.name/2010/03/29/umlgraph-in-javadoc-mit-maven/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 19:36:50 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Entwicklertools]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=255</guid>
		<description><![CDATA[Mit UMLGraph steht ein wunderbares, einfaches Tool zur Verfügung, um UML Klassendiagramme in die Javadoc Dokumentation einzufügen. Diese sind klickbar, d.h. man kann durch die Diagramme navigieren. Wer seine Projekte mit Maven erzeugt, integriert gerne auch die Javadoc-Erstellung in den Maven-Build. Und UMLGraph lässt sich da gleich ganz einfach mitnehmen. Hier ein Beispiel, wie eine [...]]]></description>
			<content:encoded><![CDATA[<p>Mit <a href="http://www.umlgraph.org/" target="_blank">UMLGraph</a> steht ein wunderbares, einfaches Tool zur Verfügung, um UML Klassendiagramme in die Javadoc Dokumentation einzufügen. Diese sind klickbar, d.h. man kann durch die Diagramme navigieren. Wer seine Projekte mit Maven erzeugt, integriert gerne auch die Javadoc-Erstellung in den Maven-Build. Und UMLGraph lässt sich da gleich ganz einfach mitnehmen.</p>
<p>Hier ein Beispiel, wie eine entsprechende Reporting-Sektion im pom.xml aussehen könnte:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reporting<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;outputDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/ein/sinnvoller/pfad<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/outputDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.maven.plugins<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-javadoc-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doclet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gr.spinellis.umlgraph.doclet.UmlGraphDoc<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/doclet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;docletArtifact<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gr.spinellis<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>UmlGraph<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>4.6<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/docletArtifact<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;additionalparam<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
           -inferrel -inferdep -quiet -hide java.* -collpackages java.util.* -qualify
           -postfixpackage -nodefontsize 9
           -nodefontpackagesize 7
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/additionalparam<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reporting<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Und das Ergebnis kann sich sehen lassen:<br />
<img src="http://joachim.weinbrenner.name/wp-content/uploads/umlgraph.png" alt="" title="umlgraph" width="470" height="335" class="aligncenter size-full wp-image-258" /></p>
<p>Wer tiefer in die Materie, Parameter und Möglichkeiten von UMLGraph einsteigen möchte findet in der <a href="http://www.umlgraph.org/doc/index.html" target="_blank">Onlinedokumentation</a> ausführliche Hilfestellung.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=UMLGraph%20in%20Javadoc%20mit%20Maven&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F03%2F29%2Fumlgraph-in-javadoc-mit-maven%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/03/29/umlgraph-in-javadoc-mit-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zeichensatz festlegen bei generierten E-Mails</title>
		<link>http://joachim.weinbrenner.name/2010/02/10/zeichensatz-festlegen-bei-generierten-e-mails/</link>
		<comments>http://joachim.weinbrenner.name/2010/02/10/zeichensatz-festlegen-bei-generierten-e-mails/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 20:29:27 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEAM]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=245</guid>
		<description><![CDATA[Programmierer habens oft eilig. Und sie gehen den Weg des geringsten Widerstands, was einfach geht, wird auch einfach gemacht. Bekanntes Beispiel: das Versenden von E-Mails aus der Applikation heraus, z.B. für Bestätigungsmails, Formularmailer usw.; in nahezu jeder Sprache gibt es dafür einfache Klassen oder Befehle, die eine E-Mail erzeugen und versenden. Leider wird dabei häufig [...]]]></description>
			<content:encoded><![CDATA[<p>Programmierer habens oft eilig. Und sie gehen den Weg des geringsten Widerstands, was einfach geht, wird auch einfach gemacht. Bekanntes Beispiel: das Versenden von E-Mails aus der Applikation heraus, z.B. für Bestätigungsmails, Formularmailer usw.; in nahezu jeder Sprache gibt es dafür einfache Klassen oder Befehle, die eine E-Mail erzeugen und versenden.</p>
<p>Leider wird dabei häufig vergessen, den Zeichensatz der generierten Mail richtig (bzw. überhaupt) zu setzen. Hat eine Mail im Header kein Feld &#8220;Content-Type:&#8221; gesetzt, so handelt man sich zwei gravierende Probleme ein:</p>
<ol>
<li>Der empfangende Client kann die Mail nicht richtig interpretieren, da er nicht weiß, in welcher Codierung der Inhalt der Mail ist. Das hat zur Folge, dass Umlaute, Sonderzeichen usw. nicht richtig angezeigt werden.</li>
<li>viele Spam-Filter werten dies als Negativ-Punkt, somit steigt die Wahrscheinlichkeit, dass die Mail ihren Empfänger nicht erreicht.</li>
</ol>
<p>Ich schreibe hier mal beispielhaft für PHP, Java, Spring und SEAM, wie man den Header um die Content-Type Angabe ergänzen kann. Dabei beschränke ich mich der Einfachheit halber auf eine simple Textmail, also kein Multipart mit HTML oder Attachment (Beispiele dazu lassen sich schnell im Web finden).</p>
<p>PHP:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$header</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'MIME-Version: 1.0'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'Content-type: text/plain; charset=UTF-8'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$strFrom</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mail</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strEmpfaenger</span><span style="color: #339933;">,</span> <span style="color: #000088;">$strSubject</span><span style="color: #339933;">,</span> <span style="color: #000088;">$strMailtext</span><span style="color: #339933;">,</span> <span style="color: #000088;">$header</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Die Mail konnte nicht versendet werden.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Java:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">MimeMessage message <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MimeMessage<span style="color: #009900;">&#40;</span>session<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
message.<span style="color: #006633;">setHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type&quot;</span>, <span style="color: #0000ff;">&quot;text/plain&quot;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;; charset=&quot;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Spring:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">MimeMessage mimeMessage <span style="color: #339933;">=</span> ...
<span style="color: #006633;">MimeMessageHelper</span> message <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MimeMessageHelper<span style="color: #009900;">&#40;</span>mimeMessage, <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>SEAM: (ein Facelet-Template, das vom SEAM gerendert wird)</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;m:message</span> <span style="color: #000066;">charset</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   ...
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/m:message<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Die Beispiele sind bewusst kurz gehalten, dass Thema E-Mail-Programmierung kann wohl Bücher füllen. In erster Linie will ich Entwickler motivieren, bei aller Eile auch an die Kleinigkeiten zu denken.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Zeichensatz%20festlegen%20bei%20generierten%20E-Mails&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F02%2F10%2Fzeichensatz-festlegen-bei-generierten-e-mails%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/02/10/zeichensatz-festlegen-bei-generierten-e-mails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hibernate Validator 4 &#8211; Validierung, wo sie hin gehört</title>
		<link>http://joachim.weinbrenner.name/2009/10/24/hibernate-validator-4-validierung-wo-sie-hin-gehort/</link>
		<comments>http://joachim.weinbrenner.name/2009/10/24/hibernate-validator-4-validierung-wo-sie-hin-gehort/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 15:54:48 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=218</guid>
		<description><![CDATA[Vor gut zwei Wochen erschien die Version 4 des Hibernate Validators. Dabei handelt es sich um eine komplett neue Codebasis, es ist nun die Referenzimplementierung des JSR-303: Bean Validation. Der Hauptvorteil der Benutzung von Hibernate Validator ist, dass die Überprüfungen da stattfinden, wo sie maßgeblich sind, nämlich im Model. Statt also in allen Schichten (GUI/Web, [...]]]></description>
			<content:encoded><![CDATA[<p>Vor gut zwei Wochen erschien die Version 4 des <a href="https://www.hibernate.org/412.html" target="_blank">Hibernate Validators</a>. Dabei handelt es sich um eine komplett neue Codebasis, es ist nun die Referenzimplementierung des <a href="http://jcp.org/en/jsr/detail?id=303" target="_blank">JSR-303: Bean Validation</a>. Der Hauptvorteil der <a href="http://docs.jboss.org/hibernate/stable/validator/reference/en/html_single/" target="_blank">Benutzung</a> von Hibernate Validator ist, dass die Überprüfungen da stattfinden, wo sie maßgeblich sind, nämlich im Model. Statt also in allen Schichten (GUI/Web, Business Layer, Data Acess, &#8230;) eine eigene Prüfung zu implementieren (und sich damit leicht Inkonsistenzen und doppelten Code einzuhandeln) erfolgt die Validierung ausschließlich in den Domänen Objekten.</p>
<p>Die Validierung erfogt über Constraints, die als Annotationen angegeben werden. Es sind schon einige Constraints enthalten, für besondere Zwecke lassen sich eigene erstellen. Hier mal ein einfaches Beispiel:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// (imports usw. weggelassen)</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Kunde <span style="color: #009900;">&#123;</span>
&nbsp;
    @NotNull<span style="color: #009900;">&#40;</span>message <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Ein Kunde muss einen Namen haben&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> nachname<span style="color: #339933;">;</span>
&nbsp;
    @Past<span style="color: #009900;">&#40;</span>message <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Geboren in der Zukunft?&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Date</span> geburtstag<span style="color: #339933;">;</span>
&nbsp;
    @Size<span style="color: #009900;">&#40;</span>min<span style="color: #339933;">=</span><span style="color: #cc66cc;">6</span>, max<span style="color: #339933;">=</span><span style="color: #cc66cc;">20</span><span style="color: #009900;">&#41;</span>
    @NotNull
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> passwort<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Getter Setter usw.</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Highlights der Version 4 sind:</p>
<ul>
<li>Native Integration in JPA 2 und JSF 2 (für SEAM Experten nichts neues, hat dort schon mit Version 3 von Hibernate Validator funktioniert)</li>
<li>Groups: Es lassen sich Gruppen definieren, welche die Validierung bestimmter Constraints anstoßen</li>
<li>Typsicherheit: Es wird sichergestellt, dass ein Constraint zum Datentyp des Properties passt.</li>
<li>stark verbesserte Testsuite</li>
<li>uvm. &#8230;</li>
</ul>
<p>Noch ein Hinweis: Hibernate Validator kann unabhängig von einer Verwendung des Hibernate ORM eingesetzt werden.</p>
<p>Meine Empfehlung: Unbedingt anschauen!</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Hibernate%20Validator%204%20%26%238211%3B%20Validierung%2C%20wo%20sie%20hin%20geh%C3%B6rt&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F10%2F24%2Fhibernate-validator-4-validierung-wo-sie-hin-gehort%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/10/24/hibernate-validator-4-validierung-wo-sie-hin-gehort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSF2 Linksammlung</title>
		<link>http://joachim.weinbrenner.name/2009/09/13/jsf2-linksammlung/</link>
		<comments>http://joachim.weinbrenner.name/2009/09/13/jsf2-linksammlung/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 19:51:03 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=205</guid>
		<description><![CDATA[Die neue Version von JSF (Java Server Faces) hat einige Verbesserungen mit sich gebracht. Hier sammle ich eine kleine Liste von Links zur Einführung in die Materie, die ich aktualisiere, wenn ich auf etwas Interessantes stoße. Andy Schwartz’s Weblog &#8211; What’s New in JSF 2? (exzellente Übersicht!) Max Katz: Learning JSF2: Managed beans (erster Teil [...]]]></description>
			<content:encoded><![CDATA[<p>Die neue Version von JSF (Java Server Faces) hat einige Verbesserungen mit sich gebracht. Hier sammle ich eine kleine Liste von Links zur Einführung in die Materie, die ich aktualisiere, wenn ich auf etwas Interessantes stoße.</p>
<ul>
<li><a href="http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/" target="_blank">Andy Schwartz’s Weblog &#8211; What’s New in JSF 2?</a> (exzellente Übersicht!)</li>
<li><a href="http://mkblog.exadel.com/jsf/learning-jsf2-managed-beans/" target="_blank">Max Katz: Learning JSF2: Managed beans</a> (erster Teil einer Einführungsserie)</li>
<li><a href="http://mkblog.exadel.com/jsf/learning-jsf2-navigation/" target="_blank">Max Katz: Learning JSF2: Navigation</a> (zweiter Teil der Einführungsserie)</li>
<li><a href="http://mkblog.exadel.com/jsf/learning-jsf-2-ajax-in-jsf-using-fajax-tag/" target="_blank">Max Katz: Learning JSF2: Ajax in JSF &#8211; using f:ajax tag</a> (Teil 3)</li>
<li><a href="http://weblogs.java.net/blog/edburns/archive/2009/10/15/jsf2-facelet-tag-handlers" target="_blank">Ed Burns: JSF2 Facelet Tag Handlers</a></li>
<li><a href="http://info.rmatics.org/2009/10/17/jsf2_tutorial_0/" target="_blank">Adventures in JSF 2.0: Hello World Tutorial using Maven 2, JSF 2, Facelets 2, and Weld</a></li>
<li><a href="http://jsfatwork.irian.at/semistatic/introduction.html" target="_blank">Kostenloses Online-Buch zu JSF 2.0 von irian.at </a></li>
<li><a href="http://www.javaserverfaces.org/" target="_blank">www.javaserverfaces.org</a> &#8211; das soll <em>die</em> Seite als Einstieg für alle JSF-Programmierer werden! Entdeckt habe ich sie via <a href="http://ocpsoft.com/java/jsf-java/jsf2-engaging-the-community/" target="_blank">http://ocpsoft.com/java/jsf-java/jsf2-engaging-the-community/</a> (dort findet man im Übrigen <a href="http://ocpsoft.com/prettyfaces/" target="_blank">PrettyFaces</a>, eine Erweiterung für &#8220;schöne&#8221; URLs bei JSF-Anwendungen)</li>
</ul>
<p>To be continued &#8230; (freue mich über jeden interessanten Link!!!)</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=JSF2%20Linksammlung&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F09%2F13%2Fjsf2-linksammlung%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/09/13/jsf2-linksammlung/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Optimieren der Speicherbelegung mit visualgc</title>
		<link>http://joachim.weinbrenner.name/2009/08/06/optimieren-der-speicherbelegung-mit-visualgc/</link>
		<comments>http://joachim.weinbrenner.name/2009/08/06/optimieren-der-speicherbelegung-mit-visualgc/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 18:50:06 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Entwicklertools]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=195</guid>
		<description><![CDATA[Hier nur schnell zwei Links zu einem Tool, das ich mir merken muss: visualgc, ein GUI-basiertes Programm zur Optimierung der Speicherbelegung von Java-Programmen. jvmstat 3.0 (enthält visualgc) Artikel auf heise Developer. Dank ans heise Team, für den schönen Artikel!]]></description>
			<content:encoded><![CDATA[<p>Hier nur schnell zwei Links zu einem Tool, das ich mir merken muss: visualgc, ein GUI-basiertes Programm zur Optimierung der Speicherbelegung von Java-Programmen.</p>
<ul>
<li><a href="http://java.sun.com/performance/jvmstat/" target="_blank">jvmstat 3.0 (enthält visualgc)</a></li>
<li><a href="http://www.heise.de/developer/Feintuning-der-Speicherbelegung-von-Java-Programmen-mit-visualgc--/artikel/143134/0" target="_blank">Artikel auf heise Developer.</a></li>
</ul>
<p>Dank ans heise Team, für den schönen Artikel!</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Optimieren%20der%20Speicherbelegung%20mit%20visualgc&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F08%2F06%2Foptimieren-der-speicherbelegung-mit-visualgc%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/08/06/optimieren-der-speicherbelegung-mit-visualgc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RESTClient: Teste deine REST-Webservices</title>
		<link>http://joachim.weinbrenner.name/2009/06/22/restclient-teste-deine-rest-webservices/</link>
		<comments>http://joachim.weinbrenner.name/2009/06/22/restclient-teste-deine-rest-webservices/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 14:30:44 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Entwicklertools]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=173</guid>
		<description><![CDATA[Wieder mal ein sehr schönes Tool entdeckt: RESTClient von WizTools.org, ein Java Programm zum Testen von REST-basierten Webservices. Das Tool gibts in zwei Geschmacksrichtungen, einmal als GUI-Version und zum anderen als Cli Version für die Batch-Ausführung. Herausragend ist die Integration von Groovy zum Schreiben von Testscripten. So lassen sich Unit-Tests nach bewährtem Muster ganz einfach [...]]]></description>
			<content:encoded><![CDATA[<p>Wieder mal ein sehr schönes Tool entdeckt: <a href="http://code.google.com/p/rest-client/" target="_blank">RESTClient</a> von <a href="http://wiztools.org/" target="_blank">WizTools.org</a>, ein Java Programm zum Testen von REST-basierten Webservices. Das Tool gibts in zwei Geschmacksrichtungen, einmal als GUI-Version und zum anderen als Cli Version für die Batch-Ausführung.</p>
<p>Herausragend ist die Integration von Groovy zum Schreiben von Testscripten. So lassen sich Unit-Tests nach bewährtem Muster ganz einfach für Webservices implementieren und die Entwicklung wird kontinuierlich getestet.</p>
<p>Hier noch ein <a href="http://download.indiwiz.com.s3.amazonaws.com/article/RESTClient.pdf" target="_blank">kleiner Artikel zu RESTClient</a> von Subhash Chandran mit Code-Beispielen.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=RESTClient%3A%20Teste%20deine%20REST-Webservices&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F06%2F22%2Frestclient-teste-deine-rest-webservices%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/06/22/restclient-teste-deine-rest-webservices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RichFaces in neuer Version: 3.3.1 GA</title>
		<link>http://joachim.weinbrenner.name/2009/05/19/richfaces-in-neuer-version-331-ga/</link>
		<comments>http://joachim.weinbrenner.name/2009/05/19/richfaces-in-neuer-version-331-ga/#comments</comments>
		<pubDate>Tue, 19 May 2009 19:46:41 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[RichFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=151</guid>
		<description><![CDATA[Das RichFaces Team hat die neue Version 3.3.1 GA veröffentlicht. In erster Linie ging es wohl darum, Bugs zu beseitigen, so wird stolz berichtet, dass über 1100 Probleme gelöst wurden. Dann gibts aber auch ein paar neue Features: Elemente für das Seitenlayout (wie Header, Footer, Sidebar etc.) Elemente für das Seitendesign unter Verwendung von Yahoo [...]]]></description>
			<content:encoded><![CDATA[<p>Das <a href="http://www.jboss.org/jbossrichfaces/" target="_blank">RichFaces</a> Team hat die neue Version 3.3.1 GA veröffentlicht. In erster Linie ging es wohl darum, Bugs zu beseitigen, so wird <a href="http://in.relation.to/Bloggers/RichFaces331GAReleased" target="_blank">stolz berichtet</a>, dass über 1100 Probleme gelöst wurden. Dann gibts aber auch ein paar neue Features:</p>
<ul>
<li>Elemente für das Seitenlayout (wie Header, Footer, Sidebar etc.)</li>
<li>Elemente für das Seitendesign unter Verwendung von <a href="http://developer.yahoo.com/yui/grids/" target="_blank">Yahoo UI CSS Grid</a></li>
<li>Endlich ein Element für eine Farbauswahl (ColorPicker)</li>
</ul>
<p>Schon allein wegen der zahlreichen Bugfixes werde ich wohl in aktuellen Projekten auf die neue Version umstellen. Inwiefern ich die neuen Dinge zum Seitenlayout und -design brauchen kann, weiß ich noch nicht. Muss ich mir genauer ansehen, mein erster Eindruck ist, dass man da mit altbewährtem genau so gut fährt.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=RichFaces%20in%20neuer%20Version%3A%203.3.1%20GA&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F05%2F19%2Frichfaces-in-neuer-version-331-ga%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/05/19/richfaces-in-neuer-version-331-ga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter4J: Java-API für Twitter</title>
		<link>http://joachim.weinbrenner.name/2009/04/22/twitter4j-java-api-fur-twitter/</link>
		<comments>http://joachim.weinbrenner.name/2009/04/22/twitter4j-java-api-fur-twitter/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 09:31:04 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=145</guid>
		<description><![CDATA[Twitter4J ist eine Java-Bibliothek für die Twitter-API von Yusuke Yamamoto. Damit lassen sich ganz einfach Status-Updates senden, die Timeline holen, Tweets suchen oder direkte Nachrichten senden. Die frisch erschienene Version 2.0.0 beherscht neben dem klassischen Login via Username/Passwort auch OAuth. Wer also Twitter in seine Java-Applikationen integrieren möchte, ist hier bestens bedient. Sogar ein Maven-Repo [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://yusuke.homeip.net/twitter4j/en/index.html" target="_blank">Twitter4J</a> ist eine Java-Bibliothek für die <a href="http://apiwiki.twitter.com/" target="_blank">Twitter-API</a> von Yusuke Yamamoto. Damit lassen sich ganz einfach Status-Updates senden, die Timeline holen, Tweets suchen oder direkte Nachrichten senden. Die frisch erschienene Version 2.0.0 beherscht neben dem klassischen Login via Username/Passwort auch <a href="http://oauth.net/" target="_blank">OAuth</a>.</p>
<p>Wer also <a href="http://twitter.com/" target="_blank">Twitter</a> in seine Java-Applikationen integrieren möchte, ist hier bestens bedient. Sogar ein Maven-Repo ist vorhanden.</p>
<p>Und es geht noch weiter: mit <a href="http://yusuke.homeip.net/log4twitter/en/index.html" target="_blank">Log4Twitter</a> hat Yamamoto einen <a href="http://logging.apache.org/log4j/" target="_blank">Log4J</a>-Appender geschrieben, mit dem sich Log4J-Ausgaben an einen Twitter-Account leiten lassen &#8211; dazu muss in der Anwendung nicht einmal was geändert werden, lediglich die Konfigurationsdatei von Log4J kriegt den passenden Eintrag. Und schon kann ich von überall die Fehlermeldungen meiner Software via Twitter abonnieren &#8230; und mit mir die ganze Welt!?</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Twitter4J%3A%20Java-API%20f%C3%BCr%20Twitter&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F04%2F22%2Ftwitter4j-java-api-fur-twitter%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/04/22/twitter4j-java-api-fur-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>geo-faces &#8211; JSF Komponentenbibliothek für interaktive Karten</title>
		<link>http://joachim.weinbrenner.name/2009/04/17/geo-faces-jsf-komponentenbibliothek-fur-interaktive-karten/</link>
		<comments>http://joachim.weinbrenner.name/2009/04/17/geo-faces-jsf-komponentenbibliothek-fur-interaktive-karten/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 20:13:42 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[geo-faces]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[RichFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=122</guid>
		<description><![CDATA[Es gibt mal wieder etwas Neues aus dem Hause Google:(siehe Kommentare) geo-faces &#8211; eine JSF Komponentenbibliothek zum Erzeugen von interaktiven Karten mit OpenLayers. Damit wird es sehr einfach unter Java serverbasiert Karten in JSF-Applikationen zu integrieren. Das ganze wurde unter Verwendung des RichFaces CDK implementiert und sieht in den ersten Demos schon sehr ordentlich aus. [...]]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration: line-through;">Es gibt mal wieder etwas Neues aus dem Hause Google:</span>(siehe Kommentare) <a href="http://code.google.com/p/geo-faces/" target="_blank">geo-faces</a> &#8211; eine JSF Komponentenbibliothek zum Erzeugen von interaktiven Karten mit <a href="http://www.openlayers.org/" target="_blank">OpenLayers</a>.</p>
<p>Damit wird es sehr einfach unter Java serverbasiert Karten in JSF-Applikationen zu integrieren. Das ganze wurde unter Verwendung des <a href="http://www.jboss.org/jbossrichfaces/" target="_blank">RichFaces</a> CDK implementiert und sieht in den ersten Demos schon sehr ordentlich aus.</p>
<p>Ausprobiert habe ich es noch nicht, vielleicht kann ich es in einem kommenden Projekt nutzen; dann werde ich auf jeden Fall hier wieder berichten.</p>
<p>[Update 18.12.09:] Sollte es speziell um Google Maps gehen, empfiehlt es sich vielleicht das <a href="http://code.google.com/p/gmaps4jsf/" target="_blank">GMaps4JSF Projekt</a> in Betracht zu ziehen.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=geo-faces%20%26%238211%3B%20JSF%20Komponentenbibliothek%20f%C3%BCr%20interaktive%20Karten&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F04%2F17%2Fgeo-faces-jsf-komponentenbibliothek-fur-interaktive-karten%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/04/17/geo-faces-jsf-komponentenbibliothek-fur-interaktive-karten/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RichFaces: Query preparation for form &#8216;null&#8217; requested</title>
		<link>http://joachim.weinbrenner.name/2009/04/07/richfaces-query-preparation-for-form-null-requested/</link>
		<comments>http://joachim.weinbrenner.name/2009/04/07/richfaces-query-preparation-for-form-null-requested/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 16:05:53 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[JSF]]></category>
		<category><![CDATA[RichFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=108</guid>
		<description><![CDATA[Hatte heute ein kleines Problem mit meinen schönen Ajax-Knöpfchen in der JSF-/RichFaces Anwendung, die wir gerade entwickeln. Die Knöpfe (in meinem Fall so etwas in der Art: &#60;a4j:commandLink [...] &#62;&#60;h:graphicImage [...] /&#62;&#60;/a4j:commandLink&#62;) wollten einfach keine Wirkung zeigen &#8211; egal welches Rädchen ich drehte. Also erst mal das A4J-Logging aktiviert: &#60;a4j:log popup=&#34;false&#34; level=&#34;ALL&#34; style=&#34;width: 800px; height: [...]]]></description>
			<content:encoded><![CDATA[<p>Hatte heute ein kleines Problem mit meinen schönen Ajax-Knöpfchen in der JSF-/RichFaces Anwendung, die wir gerade entwickeln. Die Knöpfe (in meinem Fall so etwas in der Art: &lt;a4j:commandLink <em>[...]</em> &gt;&lt;h:graphicImage <em>[...]</em> /&gt;&lt;/a4j:commandLink&gt;) wollten einfach keine Wirkung zeigen &#8211; egal welches Rädchen ich drehte.</p>
<p>Also erst mal das A4J-Logging aktiviert:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a4j:log</span> <span style="color: #000066;">popup</span>=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="color: #000066;">level</span>=<span style="color: #ff0000;">&quot;ALL&quot;</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;width: 800px; height: 300px;&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>Und siehe da, schon erhält man eine Ausgabe, die ich nach kurzem Grübeln entschlüsseln konnte: <em>Query preparation for form &#8216;null&#8217; requested</em>: Ja klar! Ich hatte doch tatsächlich die umschließenden form-Tags vergessen!</p>
<p>Also schnell die &lt;h:form&gt; und &lt;/h:form&gt; drum herum und wieder bewahrheitet sich die alte Weisheit &#8220;Kaum macht man es richtig, schon geht es!&#8221;</p>
<p>Wo wir schon bei Weisheiten sind: Manchmal sieht man eben vor lauter Bäumen den Wald nicht mehr.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=RichFaces%3A%20Query%20preparation%20for%20form%20%26%238216%3Bnull%26%238217%3B%20requested&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F04%2F07%2Frichfaces-query-preparation-for-form-null-requested%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/04/07/richfaces-query-preparation-for-form-null-requested/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JUG-Treffen mit Ed Burns</title>
		<link>http://joachim.weinbrenner.name/2009/03/20/jug-treffen-mit-ed-burns/</link>
		<comments>http://joachim.weinbrenner.name/2009/03/20/jug-treffen-mit-ed-burns/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 07:58:21 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JUG]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=81</guid>
		<description><![CDATA[Am gestrigen Donnerstag fand das JUG-März-Treffen (JUG = Java User Group Erlangen-Nürnberg) diesmal in den Schulungsräumen der MATHEMA statt. Diesmal gab es eine Diskussionsrunde über die Zukunft des Webs mit Werner Eberling und Oliver Szymanski, sowie als &#8220;Star-&#8221;Gast Ed Burns (Spec. Lead von JSF, Sun Senior Staff Engineer). Zunächst wurde über die Neuerungen im kommenden [...]]]></description>
			<content:encoded><![CDATA[<p>Am gestrigen Donnerstag fand das JUG-März-Treffen (JUG = <a href="https://www.xing.com/net/jugern/" target="_blank">Java User Group Erlangen-Nürnberg</a>) diesmal in den Schulungsräumen der <a href="http://mathema.de/" target="_blank">MATHEMA</a> statt. Diesmal gab es eine Diskussionsrunde über die Zukunft des Webs mit Werner Eberling und Oliver Szymanski, sowie als &#8220;Star-&#8221;Gast <a href="http://weblogs.java.net/blog/edburns/" target="_blank">Ed Burns</a> (Spec. Lead von <span class="caps">JSF</span>, Sun Senior Staff Engineer).</p>
<p>Zunächst wurde über die Neuerungen im kommenden <a href="http://jcp.org/aboutJava/communityprocess/pr/jsr314/index.html" target="_blank">JSF2.0</a> diskutiert, mit der Quintessenz, dass vieles einfacher wird, aber nichts spektakulär Neues hinzu kommt. Viele Dinge, die man sich bisher über andere Frameworks/Tools ins Boot geholt hat, werden jetzt in den Standard integriert (z.B. Facelets). Die faces-config.xml lässt sich zukünftig auf ein Minimum reduzieren, da das meiste über Annotationen abgedeckt werden kann.</p>
<p>Im Anschluss ging die Diskussion um die Zukunft des Web (Web3.0?) zunächst um die Wünsche aus Entwicklersicht (z.B. RichClients im Web, &#8230;), die dann mehr und mehr in Richtung Anwendersicht abschweifte (&#8220;Was will der Anwender in Zukunft?&#8221;) sowie die Probleme mit persönlichen Daten in einer vernetzten Welt.</p>
<p>Klar wurde dabei in erster Linie, wie schwer es ist, über Übermorgen hinaus zu blicken. Insgesamt hat es sehr viel Spaß gemacht und ich freue mich auf das April-Treffen.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=JUG-Treffen%20mit%20Ed%20Burns&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F03%2F20%2Fjug-treffen-mit-ed-burns%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/03/20/jug-treffen-mit-ed-burns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSF / RichFaces: Doppelklick auf Tabellenzeile</title>
		<link>http://joachim.weinbrenner.name/2009/03/17/jsf-richfaces-doppelklick-auf-tabellenzeile/</link>
		<comments>http://joachim.weinbrenner.name/2009/03/17/jsf-richfaces-doppelklick-auf-tabellenzeile/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 14:48:08 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[RichFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=38</guid>
		<description><![CDATA[Hier wird ein kurzes Beispiel gezeigt, wie man auf einer JSF-Seite unter Verwendung von RichFaces bzw. Ajax4jsf auf einen Doppelklick in einer DataTable mit einer Action reagieren kann. Die Tabelle listet Personen auf, beim Doppelklick auf eine Zeile soll eine Maske zur Bearbeitung der selektierten Person geöffnet werden. In diesem Fall wurde nicht die &#8220;normale&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Hier wird ein kurzes Beispiel gezeigt, wie man auf einer JSF-Seite unter Verwendung von <a href="http://www.jboss.org/jbossrichfaces" target="_blank">RichFaces </a>bzw. Ajax4jsf auf einen Doppelklick in einer DataTable mit einer Action reagieren kann.</p>
<p>Die Tabelle listet Personen auf, beim Doppelklick auf eine Zeile soll eine Maske zur Bearbeitung der selektierten Person geöffnet werden. In diesem Fall wurde nicht die &#8220;normale&#8221; DataTable verwendet, sondern die <a href="http://livedemo.exadel.com/richfaces-demo/richfaces/extendedDataTable.jsf" target="_blank">ExtendedDataTable</a>. Sie sieht in etwa so aus:</p>
<p><img class="alignnone size-full wp-image-40" style="float: none" title="datatable" src="http://joachim.weinbrenner.name/wp-content/uploads/datatable.png" alt="datatable" width="350" height="128" /></p>
<p>Zuerst der Codeausschnitt der JSF-Seite:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h:form</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;personen&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rich:extendedDataTable</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;#{personListBean.fullPersonList}&quot;</span></span>
<span style="color: #009900;">        <span style="color: #000066;">var</span>=<span style="color: #ff0000;">&quot;person&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;persontable&quot;</span> </span>
<span style="color: #009900;">        <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;886px&quot;</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;400px&quot;</span> <span style="color: #000066;">sortMode</span>=<span style="color: #ff0000;">&quot;single&quot;</span> <span style="color: #000066;">selectionMode</span>=<span style="color: #ff0000;">&quot;single&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a4j:support</span> <span style="color: #000066;">event</span>=<span style="color: #ff0000;">&quot;onRowDblClick&quot;</span> <span style="color: #000066;">action</span>=<span style="color: #ff0000;">&quot;#{PersonEditBean.prepareEdit}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;f:setPropertyActionListener</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;#{person}&quot;</span></span>
<span style="color: #009900;">                <span style="color: #000066;">target</span>=<span style="color: #ff0000;">&quot;#{PersonEditBean.selectedPerson}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a4j:support<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rich:column</span> <span style="color: #000066;">sortable</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">sortBy</span>=<span style="color: #ff0000;">&quot;#{person.nachname}&quot;</span></span>
<span style="color: #009900;">            <span style="color: #000066;">filterBy</span>=<span style="color: #ff0000;">&quot;#{person.nachname}&quot;</span> <span style="color: #000066;">filterEvent</span>=<span style="color: #ff0000;">&quot;onkeyup&quot;</span></span>
<span style="color: #009900;">            <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;170px&quot;</span> <span style="color: #000066;">label</span>=<span style="color: #ff0000;">&quot;Nachname&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;f:facet</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;header&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h:outputText</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Nachname&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/f:facet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h:outputText</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;#{person.nachname}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rich:column<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> 
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rich:column</span> <span style="color: #000066;">sortable</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">sortBy</span>=<span style="color: #ff0000;">&quot;#{person.vorname}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #808080; font-style: italic;">&lt;!-- [...] --&gt;</span>
        <span style="color: #808080; font-style: italic;">&lt;!-- [weitere Columns ...] --&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rich:extendedDataTable<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h:form<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Der entscheidende Code:<br />
In Zeile 3 wird über var=&#8221;person&#8221; die Variable für die verknüpften Instanzen in den Zeilen angelegt.<br />
Die Zeilen 5 bis 8 definieren das AJAX Doppelklick Event. Als Action wird im PersonEditBean die Methode prepareEdit() angegeben. Dort geschieht eigentlich nichts weiter als das Umkopieren der Werte. Damit überhaupt die richtige (also die doppelgeklickte) Person verwendet wird, ist der PropertyActionListener nötig (Zeile 6 und 7).</p>
<p>Bleibt noch zu klären, wie denn nun die Maske zum Editieren der Person zum Zuge kommt. Dies wurde hier einfach mit einer klassischen Navigation geregelt; hier der Ausschnitt aus der faces-config.xml:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;navigation-rule<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;from-view-id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/[...]/personen.jsp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/from-view-id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;navigation-case<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;from-action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>#{PersonEditBean.prepareEdit}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/from-action<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;from-outcome<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>prepare_erfolgreich<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/from-outcome<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;to-view-id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/[...]/editperson.jsp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/to-view-id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;redirect</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/navigation-case<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/navigation-rule<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Die prepareEdit() Methode liefert als Ergebnis den String &#8220;prepare_erfolgreich&#8221; und schon wird weitergeleitet. Immer? Eigentlich schon, lediglich der Internet Explorer will mal wieder nicht. Dagegen hilft aber Zeile 7 (&#8220;&lt;redirect/&gt;&#8221;). Vielen Dank für diesen <a href="http://www-02.imixs.com:8081/roller/ralphsjavablog/entry/richfaces_feature_will_not_work" target="_blank">Hinweis aus Ralph&#8217;s Java Blog</a>!</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=JSF%20%2F%20RichFaces%3A%20Doppelklick%20auf%20Tabellenzeile&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F03%2F17%2Fjsf-richfaces-doppelklick-auf-tabellenzeile%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/03/17/jsf-richfaces-doppelklick-auf-tabellenzeile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Buchkritik: JPA mit Hibernate</title>
		<link>http://joachim.weinbrenner.name/2009/03/15/buchkritik-jpa-mit-hibernate/</link>
		<comments>http://joachim.weinbrenner.name/2009/03/15/buchkritik-jpa-mit-hibernate/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 23:20:22 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Buchkritik]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JPA]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=23</guid>
		<description><![CDATA[Endlich mal ein Hibernate-Buch, das sich gleich voll und ganz auf die Annotations-Schreibweisen stürzt und die althergebrachte Konfiguration über XML-Dateien in einem separaten Kapitel abhandelt. Alles in allem haben die Autoren Bernd Müller und Harald Wehr in Ihrem Buch &#8220;Java-Persistence-API mit Hibernate&#8221; einen geglückten Überblick über die Materie geschaffen und heben sich dabei durch einen [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-24" title="jpa-hibernate" src="http://joachim.weinbrenner.name/wp-content/uploads/jpa-hibernate.jpg" alt="jpa-hibernate" width="155" height="232" />Endlich mal ein Hibernate-Buch, das sich gleich voll und ganz auf die Annotations-Schreibweisen stürzt und die althergebrachte Konfiguration über XML-Dateien in einem separaten Kapitel abhandelt. Alles in allem haben die Autoren Bernd Müller und Harald Wehr in Ihrem Buch &#8220;Java-Persistence-API mit Hibernate&#8221; einen geglückten Überblick über die Materie geschaffen und heben sich dabei durch einen kompakten, verständlichen Schreibstil hervor.</p>
<p>Besonders schön ist die Orientierung an der JPA &#8211; wann immer Feinheiten von Hibernate, die darüber hinaus gehen besprochen werden, wird dies gesondert hervorgehoben. Die Beispiele sind nie komplexer als nötig und damit leicht verständlich, wenngleich an manchen Ecken etwas konstruiert wird.</p>
<p>Als &#8220;Extras&#8221; gibt es eine Einführung in Hibernate-Validator und -Search, einen Überblick über das Eclipse-Plugin Hibernate-Tools/JBoss-IDE, sowie eine Schnelleinführung in JBoss-Seam (wobei sich hier auch gleich Werbung für das neue Buch von Bernd Müller versteckt).</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Buchkritik%3A%20JPA%20mit%20Hibernate&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F03%2F15%2Fbuchkritik-jpa-mit-hibernate%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/03/15/buchkritik-jpa-mit-hibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

