<?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>23A &#187; Coding</title>
	<atom:link href="http://blog.davidgraesser.de/category/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.davidgraesser.de</link>
	<description>code snippets and more...</description>
	<lastBuildDate>Tue, 08 Nov 2011 21:14:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Resizing iFrame</title>
		<link>http://blog.davidgraesser.de/2011/04/05/resizing-iframe/</link>
		<comments>http://blog.davidgraesser.de/2011/04/05/resizing-iframe/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 14:27:21 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[HTML | CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[automatic resizing]]></category>
		<category><![CDATA[height=100%]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[max-height]]></category>
		<category><![CDATA[resizing]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=221</guid>
		<description><![CDATA[Folgende Funktion passt ein iFrame immer an die Größe der umliegenden Seite an: &#60;script type=&#8220;text/javascript&#8221;&#62; window.onresize = function&#40;&#41;&#123;autoIframe&#40;&#8220;myIFrame&#8221;&#41;&#125;; &#160; function autoIframe&#40;frameId&#41; &#123; &#160; &#160;try&#123; &#160; &#160; &#160; &#160; frame = document.getElementById&#40;frameId&#41;; &#160; &#160; &#160; &#160; var realHeight = document.documentElement.clientHeight; &#160; &#160; &#160; &#160; frame.style.height = realHeight + &#8216;px&#8217;; &#160; &#160;&#125; &#160; &#160;catch&#40;err&#41;&#123; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Folgende Funktion passt ein iFrame immer an die Größe der umliegenden Seite an:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1">&lt;script type=<span class="st0">&#8220;text/javascript&#8221;</span>&gt; </div>
</li>
<li class="li1">
<div class="de1">window.<span class="kw3">onresize</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>autoIframe<span class="br0">&#40;</span><span class="st0">&#8220;myIFrame&#8221;</span><span class="br0">&#41;</span><span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> autoIframe<span class="br0">&#40;</span>frameId<span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">try</span><span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; frame = document.<span class="me1">getElementById</span><span class="br0">&#40;</span>frameId<span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> realHeight = document.<span class="me1">documentElement</span>.<span class="me1">clientHeight</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; frame.<span class="me1">style</span>.<span class="me1">height</span> = realHeight + <span class="st0">&#8216;px&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">catch</span><span class="br0">&#40;</span>err<span class="br0">&#41;</span><span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; window.<span class="kw3">status</span> = err.<span class="me1">message</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&lt;/script&gt; </div>
</li>
</ol>
</div>
</div>
<p>Funktioniert im IE6/8, Firefox 3/4</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2011/04/05/resizing-iframe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Größe einer Liste in einer JSP darstellen</title>
		<link>http://blog.davidgraesser.de/2011/01/06/grose-einer-liste-in-einer-jsp-darstellen/</link>
		<comments>http://blog.davidgraesser.de/2011/01/06/grose-einer-liste-in-einer-jsp-darstellen/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 09:42:35 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[arraylist]]></category>
		<category><![CDATA[core jstl]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java.lang.String]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[size]]></category>
		<category><![CDATA[The "." operator was supplied]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=204</guid>
		<description><![CDATA[Wieder mal ein klassisches, simples Problem. In einer JSP kann man nicht auf die Methode size() einer java.util.List zugreifen, das die JSTL mit dem Aufruf &#60;c:out value=&#8220;${list.size}&#8221;/&#62; einen Getter erwartet und folgende Fehlermeldung produziert: The &#8220;.&#8221; operator was supplied with an index value of type &#8220;java.lang.String&#8221; to be applied to a List or array&#8230; Die [...]]]></description>
			<content:encoded><![CDATA[<p>Wieder mal ein klassisches, simples Problem. In einer JSP kann man nicht auf die Methode size() einer java.util.List zugreifen, das die JSTL mit dem Aufruf </p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="sc2">&lt;c:out <span class="kw3">value</span>=<span class="st0">&#8220;${list.size}&#8221;</span>/<span class="kw2">&gt;</span></a></span> </div>
</li>
</ol>
</div>
</div>
<p> einen Getter erwartet und folgende Fehlermeldung produziert:</p>
<blockquote><p>
The &#8220;.&#8221; operator was supplied with an index value of type &#8220;java.lang.String&#8221; to be applied to a List or array&#8230;
</p></blockquote>
<p>Die Erstellung einer einfachen Wrapperklasse behebt dieses Problem:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">class</span> ListWrapper <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">private</span> <a href="http://www.google.com/search?q=allinurl%3AList+java.sun.com&#038;bntl=1"><span class="kw3">List</span></a> list;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> ListWrapper<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span>.<span class="me1">list</span> = <span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3AArrayList+java.sun.com&#038;bntl=1"><span class="kw3">ArrayList</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">int</span> getSize<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> list.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <a href="http://www.google.com/search?q=allinurl%3AList+java.sun.com&#038;bntl=1"><span class="kw3">List</span></a> getList<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> list;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> </div>
</li>
</ol>
</div>
</div>
<p>Die Idee zur Lösung habe ich Buch Core JSTL von David M. Geary gefunden.</p>
<p><a href="http://books.google.de/books?id=ktbRmbLGseoC&#038;lpg=PT107&#038;ots=dzMD8nBtky&#038;dq=The%20%22.%22%20operator%20was%20supplied%20with%20an%20index%20value%20of%20type%20%22java.lang.String%22%20to%20be%20applied%20to%20a%20List%20or%20array&#038;pg=PT107#v=onepage&#038;q=The%20%22.%22%20operator%20was%20supplied%20with%20an%20index%20value%20of%20type%20%22java.lang.String%22%20to%20be%20applied%20to%20a%20List%20or%20array&#038;f=false">Quelle</a></p>
<p>Sollte man functions-Bibliothek &#8220;fn&#8221; nutzen, kann man natürlich die Funktion<br />
<em>fn:length</em> verwenden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2011/01/06/grose-einer-liste-in-einer-jsp-darstellen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XSLT: XML zu CSV mit Kopfzeile</title>
		<link>http://blog.davidgraesser.de/2010/07/12/xslt-xml-zu-csv-mit-kopfzeile/</link>
		<comments>http://blog.davidgraesser.de/2010/07/12/xslt-xml-zu-csv-mit-kopfzeile/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 21:19:10 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=155</guid>
		<description><![CDATA[Folgendes XSLT-Transformation generiert eine CSV-Datei, wobei die XML-Tag-Namen als Kopfzeile ausgegeben werden. Die Tag-Namen müssen für diese Transformation nicht bekannt sein. XSL: &#60;xsl:stylesheet version=&#8220;1.0&#8243; xmlns:xsl=&#8220;http://www.w3.org/1999/XSL/Transform&#8221;&#62; &#160;&#60;xsl utput omit-xml-declaration=&#8220;yes&#8221; method=&#8220;html&#8221; indent=&#8220;yes&#8221; encoding=&#8220;ISO-8859-1&#8243;/&#62; &#160; &#60;xsl:strip-space elements=&#8220;*&#8221; /&#62; &#60;!&#8211;Erstellung der Kopfzeile&#8211;&#62; &#60;xsl:template match=&#8220;/*/child::*&#8221;&#62; &#60;xsl:for-each select=&#8220;*[1]/child::*&#8221;&#62; &#60;xsl:if test=&#8220;position() != last()&#8221;&#62;&#34;&#60;xsl:value-of select=&#8220;name()&#8221;/&#62;&#34;;&#60;/xsl:if&#62; &#60;xsl:if test=&#8220;position()&#160; = last()&#8221;&#62;&#34;&#60;xsl:value-of select=&#8220;name()&#8221;/&#62;&#34;&#60;xsl:text&#62;&#38;#xD;&#60;/xsl:text&#62;&#60;/xsl:if&#62; &#60;/xsl:for-each&#62; &#60;xsl:apply-templates/&#62; &#60;/xsl:template&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Folgendes XSLT-Transformation generiert eine CSV-Datei, wobei die XML-Tag-Namen als Kopfzeile ausgegeben werden. Die Tag-Namen müssen für diese Transformation nicht bekannt sein.</p>
<p>XSL:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:stylesheet <span class="re0">version</span>=<span class="st0">&#8220;1.0&#8243;</span> xmlns:<span class="re0">xsl</span>=<span class="st0">&#8220;http://www.w3.org/1999/XSL/Transform&#8221;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sc3"><span class="re1">&lt;xsl</span> <img src='http://blog.davidgraesser.de/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> utput <span class="re0">omit-xml-declaration</span>=<span class="st0">&#8220;yes&#8221;</span> <span class="re0">method</span>=<span class="st0">&#8220;html&#8221;</span> <span class="re0">indent</span>=<span class="st0">&#8220;yes&#8221;</span> <span class="re0">encoding</span>=<span class="st0">&#8220;ISO-8859-1&#8243;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:strip-space <span class="re0">elements</span>=<span class="st0">&#8220;*&#8221;</span> <span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="coMULTI">&lt;!&#8211;Erstellung der Kopfzeile&#8211;&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:template <span class="re0">match</span>=<span class="st0">&#8220;/*/child::*&#8221;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:for-each <span class="re0">select</span>=<span class="st0">&#8220;*[1]/child::*&#8221;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:if <span class="re0">test</span>=<span class="st0">&#8220;position() != last()&#8221;</span><span class="re2">&gt;</span></span>&quot;<span class="sc3"><span class="re1">&lt;xsl</span>:value-of <span class="re0">select</span>=<span class="st0">&#8220;name()&#8221;</span><span class="re2">/&gt;</span></span>&quot;;<span class="sc3"><span class="re1">&lt;/xsl</span>:if<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:if <span class="re0">test</span>=<span class="st0">&#8220;position()&nbsp; = last()&#8221;</span><span class="re2">&gt;</span></span>&quot;<span class="sc3"><span class="re1">&lt;xsl</span>:value-of <span class="re0">select</span>=<span class="st0">&#8220;name()&#8221;</span><span class="re2">/&gt;</span></span>&quot;<span class="sc3"><span class="re1">&lt;xsl</span>:text<span class="re2">&gt;</span></span><span class="sc1">&amp;#xD;</span><span class="sc3"><span class="re1">&lt;/xsl</span>:text<span class="re2">&gt;</span></span><span class="sc3"><span class="re1">&lt;/xsl</span>:if<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/xsl</span>:for-each<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:apply-templates<span class="re2">/&gt;</span></span> </div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/xsl</span>:template<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="coMULTI">&lt;!&#8211;Erstellung der Inhaltszeilen&#8211;&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:template <span class="re0">match</span>=<span class="st0">&#8220;/*/*/child::*&#8221;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:for-each <span class="re0">select</span>=<span class="st0">&#8220;child::*&#8221;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:if <span class="re0">test</span>=<span class="st0">&#8220;position() != last()&#8221;</span><span class="re2">&gt;</span></span>&quot;<span class="sc3"><span class="re1">&lt;xsl</span>:value-of <span class="re0">select</span>=<span class="st0">&#8220;normalize-space(.)&#8221;</span><span class="re2">/&gt;</span></span>&quot;;<span class="sc3"><span class="re1">&lt;/xsl</span>:if<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;xsl</span>:if <span class="re0">test</span>=<span class="st0">&#8220;position()&nbsp; = last()&#8221;</span><span class="re2">&gt;</span></span>&quot;<span class="sc3"><span class="re1">&lt;xsl</span>:value-of <span class="re0">select</span>=<span class="st0">&#8220;normalize-space(.)&#8221;</span><span class="re2">/&gt;</span></span>&quot;<span class="sc3"><span class="re1">&lt;xsl</span>:text<span class="re2">&gt;</span></span><span class="sc1">&amp;#xD;</span><span class="sc3"><span class="re1">&lt;/xsl</span>:text<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/xsl</span>:if<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/xsl</span>:for-each<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/xsl</span>:template<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/xsl</span>:stylesheet<span class="re2">&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
<p>Beispiel-XML:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;</span>?xml <span class="re0">version</span>=<span class="st0">&#8220;1.0&#8243;</span> <span class="re0">encoding</span>=<span class="st0">&#8220;UTF-8&#8243;</span>?<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;DATA<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;LIST<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;PRODUKT<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;TYP<span class="re2">&gt;</span></span></span>AUTO<span class="sc3"><span class="re1">&lt;/TYP<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;BESCHREIBUNG<span class="re2">&gt;</span></span></span>VW<span class="sc3"><span class="re1">&lt;/BESCHREIBUNG<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/PRODUKT<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;PRODUKT<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;TYP<span class="re2">&gt;</span></span></span>AUTO<span class="sc3"><span class="re1">&lt;/TYP<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;BESCHREIBUNG<span class="re2">&gt;</span></span></span>DAIMLER<span class="sc3"><span class="re1">&lt;/BESCHREIBUNG<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/PRODUKT<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;PRODUKT<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;TYP<span class="re2">&gt;</span></span></span>AUTO<span class="sc3"><span class="re1">&lt;/TYP<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;BESCHREIBUNG<span class="re2">&gt;</span></span></span>OPEL<span class="sc3"><span class="re1">&lt;/BESCHREIBUNG<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/PRODUKT<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/LIST<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/DATA<span class="re2">&gt;</span></span></span> </div>
</li>
</ol>
</div>
</div>
<p>Als Tool zum testen der Transformation hat sich: <a href="http://www.wenzlaff.de/xmltocsv.html">TWXml2Csv</a> bewährt.</p>
<p>Links zum Thema:<br />
<a href="http://amolip.de/Scripts/CopyingWithXslt/Description_CopyingWithXslt.html">Kopieren mit XSLT</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2010/07/12/xslt-xml-zu-csv-mit-kopfzeile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selenium &amp; TestNG</title>
		<link>http://blog.davidgraesser.de/2010/05/04/selenium-testng/</link>
		<comments>http://blog.davidgraesser.de/2010/05/04/selenium-testng/#comments</comments>
		<pubDate>Tue, 04 May 2010 14:45:58 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=134</guid>
		<description><![CDATA[Hier eine Liste mit Problemen die ich beim ersten Einsatz vom Selenium &#038; TestNG hatte und keine direkte Problemlösung im Netz gefunden habe. Problem 1: Man kann seine TestSuiten in mehrere SubSuiten unterteilen und über mehrere XML-Konfigurationen definieren. Bsp: &#60;?xml version=&#8220;1.0&#8243; encoding=&#8220;UTF-8&#8243;?&#62; &#60;suite name=&#8220;suiten&#8221; verbose=&#8220;10&#8243;&#62; &#160; &#160; &#160; &#160; &#60;suite-files&#62; &#160; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Hier eine Liste mit Problemen die ich beim ersten Einsatz vom Selenium &#038; TestNG hatte und keine direkte Problemlösung im Netz gefunden habe.</p>
<p><strong>Problem 1:</strong><br />
Man kann seine TestSuiten in mehrere SubSuiten unterteilen und über mehrere XML-Konfigurationen definieren.<br />
Bsp:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;</span>?xml <span class="re0">version</span>=<span class="st0">&#8220;1.0&#8243;</span> <span class="re0">encoding</span>=<span class="st0">&#8220;UTF-8&#8243;</span>?<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;suite</span> <span class="re0">name</span>=<span class="st0">&#8220;suiten&#8221;</span> <span class="re0">verbose</span>=<span class="st0">&#8220;10&#8243;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;suite</span>-files<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;suite</span>-file <span class="re0">path</span>=<span class="st0">&#8220;suiten/myTest1.xml&#8221;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/suite</span>-files<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;suite</span>-files<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;suite</span>-file <span class="re0">path</span>=<span class="st0">&#8220;suiten/myTest2.xml&#8221;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/suite</span>-files<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/suite<span class="re2">&gt;</span></span></span> </div>
</li>
</ol>
</div>
</div>
<p>Leider kommt es bei diesem Setup zu einer NullPointerException</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>TestNG<span class="br0">&#93;</span> Reporter org.<span class="me1">testng</span>.<span class="me1">reporters</span>.<span class="me1">XMLReporter</span>@be0e27 failed</div>
</li>
<li class="li1">
<div class="de1">java.<span class="me1">lang</span>.<a href="http://www.google.com/search?q=allinurl%3ANullPointerException+java.sun.com&#038;bntl=1"><span class="kw3">NullPointerException</span></a></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; at java.<span class="me1">util</span>.<a href="http://www.google.com/search?q=allinurl%3ACalendar+java.sun.com&#038;bntl=1"><span class="kw3">Calendar</span></a>.<span class="me1">setTime</span><span class="br0">&#40;</span>Unknown Source<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; at java.<span class="me1">text</span>.<a href="http://www.google.com/search?q=allinurl%3ASimpleDateFormat+java.sun.com&#038;bntl=1"><span class="kw3">SimpleDateFormat</span></a>.<span class="me1">format</span><span class="br0">&#40;</span>Unknown Source<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; at java.<span class="me1">text</span>.<a href="http://www.google.com/search?q=allinurl%3ASimpleDateFormat+java.sun.com&#038;bntl=1"><span class="kw3">SimpleDateFormat</span></a>.<span class="me1">format</span><span class="br0">&#40;</span>Unknown Source<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; at java.<span class="me1">text</span>.<a href="http://www.google.com/search?q=allinurl%3ADateFormat+java.sun.com&#038;bntl=1"><span class="kw3">DateFormat</span></a>.<span class="me1">format</span><span class="br0">&#40;</span>Unknown Source<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; at org.<span class="me1">testng</span>.<span class="me1">reporters</span>.<span class="me1">XMLReporter</span>.<span class="me1">addDurationAttributes</span><span class="br0">&#40;</span>XMLReporter.<span class="me1">java</span>:<span class="nu0">144</span><span class="br0">&#41;</span> </div>
</li>
</ol>
</div>
</div>
<p>Scheinbar verlangt TestNG das in jedem Suite-File mind. ein konkreter Test enthalten ist.<br />
Mit diesem Setup hats dann funktioniert:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;</span>?xml <span class="re0">version</span>=<span class="st0">&#8220;1.0&#8243;</span> <span class="re0">encoding</span>=<span class="st0">&#8220;UTF-8&#8243;</span>?<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;suite</span> <span class="re0">name</span>=<span class="st0">&#8220;suiten&#8221;</span> <span class="re0">verbose</span>=<span class="st0">&#8220;10&#8243;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;suite</span>-files<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;suite</span>-file <span class="re0">path</span>=<span class="st0">&#8220;suiten/myTest1.xml&#8221;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/suite</span>-files<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;suite</span>-files<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;suite</span>-file <span class="re0">path</span>=<span class="st0">&#8220;suiten/myTest2.xml&#8221;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/suite</span>-files<span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;test</span> <span class="re0">name</span>=<span class="st0">&#8220;StartStop&#8221;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;classes<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;class</span> <span class="re0">name</span>=<span class="st0">&#8220;de.test.java.FakeTest&#8221;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/classes<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/test<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/suite<span class="re2">&gt;</span></span></span> </div>
</li>
</ol>
</div>
</div>
<p><strong>Problem 2:</strong><br />
Um den kompletten Inhalt eines HTML-Elementes auszulesen gibt es folgende Möglichkeit:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&#038;bntl=1"><span class="kw3">String</span></a> tableContent = session<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">getAttribute</span><span class="br0">&#40;</span><span class="st0">&#8220;//form[@id='test']/div/table&#8221;</span><span class="br0">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
<p>Dabei konnte allerdings der XPath durch die SingleQuotes nicht korrekt aufgelöst werden.</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1">ERROR: Invalid xpath: XPath parse error </div>
</li>
</ol>
</div>
</div>
<p>Mit getText hats dann geklappt:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&#038;bntl=1"><span class="kw3">String</span></a> tableContent = session<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">getText</span><span class="br0">&#40;</span><span class="st0">&#8220;//form[@id='test']/div/table&#8221;</span><span class="br0">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
<p>Im String tableContent sind dann alle sichtbaren Inhalte der Tabelle, durch Whitespaces getrennt, enthalten.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2010/05/04/selenium-testng/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Link-Sammlung CSS 3</title>
		<link>http://blog.davidgraesser.de/2010/03/28/link-sammlung-css-3/</link>
		<comments>http://blog.davidgraesser.de/2010/03/28/link-sammlung-css-3/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 16:33:19 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[HTML | CSS]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[gradient]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[vorschau]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=131</guid>
		<description><![CDATA[hier mal eine liste von seiten, die sich bei der entwicklung mit css 3 als nützlich herrausgestellt haben: Übersicht der Browser-Unterstützung von CSS 3 Eigenschaften CSS 3-Live Editor mit Cross-Browser-Regeln CCS 3-Editor mit Vorschau und Browser-Kompatibilität CSS 3 Gradient Code Generator CSS 3 Border Radius Generator]]></description>
			<content:encoded><![CDATA[<p>hier mal eine liste von seiten, die sich bei der entwicklung mit css 3 als nützlich herrausgestellt haben:<br />
<a href="http://www.findmebyip.com/litmus/#target-selector">Übersicht der Browser-Unterstützung von CSS 3 Eigenschaften</a><br />
<a href="http://css3please.com/">CSS 3-Live Editor mit Cross-Browser-Regeln</a><br />
<a href="http://css3generator.com/">CCS 3-Editor mit Vorschau und Browser-Kompatibilität</a><br />
<a href="http://gradients.glrzad.com/">CSS 3 Gradient Code Generator</a><br />
<a href="http://border-radius.com/">CSS 3 Border Radius Generator</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2010/03/28/link-sammlung-css-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Logging</title>
		<link>http://blog.davidgraesser.de/2009/06/22/javascript-logging/</link>
		<comments>http://blog.davidgraesser.de/2009/06/22/javascript-logging/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 20:13:58 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[blackbirdjs]]></category>
		<category><![CDATA[javascript logging]]></category>
		<category><![CDATA[js logging]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=100</guid>
		<description><![CDATA[Nette kleine Bibliothek fürs Loggen in JavaScript Funktionen. MIt Features wie Filtern der LogEntrys nach Typ, Zeitmessung und Tastaturbedienung. Der Slogan zum Tool gefällt mir auch gut: &#8230;and goobye to alert(); http://www.gscottolson.com/blackbirdjs/ Quelle: http://www.smashingmagazine.com/2009/06/21/50-fresh-javascript-tools-that-will-improve-your-workflow/]]></description>
			<content:encoded><![CDATA[<p><img src="http://media1.smashingmagazine.com/wp-content/uploads/images/js-50-useful-tools/blackbird.jpg" alt="BlackBirdJS" /><br />
Nette kleine Bibliothek fürs Loggen in JavaScript Funktionen. MIt Features wie Filtern der LogEntrys nach Typ, Zeitmessung und Tastaturbedienung. Der Slogan zum Tool gefällt mir auch gut:<br />
<strong>&#8230;and goobye to alert();</strong></p>
<p><a href="http://www.gscottolson.com/blackbirdjs/">http://www.gscottolson.com/blackbirdjs/</a></p>
<p>Quelle: <a href="http://www.smashingmagazine.com/2009/06/21/50-fresh-javascript-tools-that-will-improve-your-workflow/">http://www.smashingmagazine.com/2009/06/21/50-fresh-javascript-tools-that-will-improve-your-workflow/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2009/06/22/javascript-logging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google API Live testen</title>
		<link>http://blog.davidgraesser.de/2009/01/23/google-api-live-testen/</link>
		<comments>http://blog.davidgraesser.de/2009/01/23/google-api-live-testen/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 22:11:18 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[APIs]]></category>
		<category><![CDATA[Playground]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=88</guid>
		<description><![CDATA[Sehr gut gemachte Spielwiese um die JavaScript-Bibliotheken von Google live auszuprobieren. http://code.google.com/apis/ajax/playground/]]></description>
			<content:encoded><![CDATA[<p>Sehr gut gemachte Spielwiese um die JavaScript-Bibliotheken von Google live auszuprobieren.<br />
<a href="http://code.google.com/apis/ajax/playground/">http://code.google.com/apis/ajax/playground/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2009/01/23/google-api-live-testen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JMeter und SSL-Verbindungen</title>
		<link>http://blog.davidgraesser.de/2009/01/12/jmeter-und-ssl-verbindungen/</link>
		<comments>http://blog.davidgraesser.de/2009/01/12/jmeter-und-ssl-verbindungen/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 09:14:46 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jmeter]]></category>
		<category><![CDATA[p12]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[ssl-manager]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=87</guid>
		<description><![CDATA[Für das verteilte Testen von Anwendungen mit JMeter ergibt sich die Problematik das man bei verschlüsselten Verbindungen in den JMeter-Clients bei jedem Start das Zertifikatspasswort eingeben müsste. Um dies zum umgehen kann man einen Keystore generieren und diesen dann in den JMeter-Properties angeben. Den Keystore erzeugt man sich mit keytool, welches mit Java ausgeliefert wird. [...]]]></description>
			<content:encoded><![CDATA[<p>Für das verteilte Testen von Anwendungen mit JMeter ergibt sich die Problematik das man bei verschlüsselten Verbindungen in den JMeter-Clients bei jedem Start das Zertifikatspasswort eingeben müsste. Um dies zum umgehen kann man einen Keystore generieren und diesen dann in den JMeter-Properties angeben.</p>
<p>Den Keystore erzeugt man sich mit keytool, welches mit Java ausgeliefert wird.</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1">keytool -<span class="co2">importkeystore -deststorepass myPassword -destkeystore myKeystore -srckeystore myZertifikat.p12 -srcstoretype PKCS12 -srcstorepass myPassword </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
</div>
<p><strong>Achtung: Das Passwort für den Keystore muss identisch sein mit dem Passwort des Zertifikates</strong><br />
Die Erzeugung des Keystores mit diesen Parametern funktioniert nur mit Java-6.</p>
<p>in den jmeter.properties müssen folgende angaben gemacht werden:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"># Location of the keystore</div>
</li>
<li class="li1">
<div class="de1">javax.<span class="me1">net</span>.<span class="me1">ssl</span>.<span class="me1">keyStore</span>=C:\\myKeystore</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">#The password to your keystore</div>
</li>
<li class="li1">
<div class="de1">javax.<span class="me1">net</span>.<span class="me1">ssl</span>.<span class="me1">keyStorePassword</span>=myPassword </div>
</li>
</ol>
</div>
</div>
<p>Bei Änderungen in den jmeter.properties muss JMeter neu gestartet werden.</p>
<p>Die Lösung lässt sich natürlich auch für Einzelplatz-Test benutzen. Übrigens wenn man den &#8220;normalen&#8221; Weg über den SSL-Manager geht, nicht wundern das die Zertifikatspasswordabfrage nicht erscheint wenn man das Zertifikat gerade hinzugefügt hat. Die Nachfrage nach diesem Passwort kommt erst wenn man den Test startet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2009/01/12/jmeter-und-ssl-verbindungen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox und innerText</title>
		<link>http://blog.davidgraesser.de/2008/06/20/firefox-und-innertext/</link>
		<comments>http://blog.davidgraesser.de/2008/06/20/firefox-und-innertext/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 08:44:30 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[td innerText Tabellenzelle Text HTML JavaScript]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=83</guid>
		<description><![CDATA[Im Firefox führt der Aufruf $&#40;id&#41;.innerText; zu einem undefined Ergebnis. Grund dafür ist das der Mozillabrowser diesen Aufruf nicht unterstützt und dafür die Alternative: $&#40;id&#41;.textContent; anbietet. more info: http://developer.mozilla.org/en/docs/DOM:element.textContent Damit es in beiden Browsern funktioniert kann man folgenden Aufruf nutzen: $&#40;id&#41;.firstChild.nodeValue;]]></description>
			<content:encoded><![CDATA[<p>Im Firefox führt der Aufruf</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1">$<span class="br0">&#40;</span>id<span class="br0">&#41;</span>.<span class="me1">innerText</span>; </div>
</li>
</ol>
</div>
</div>
<p>zu einem <em>undefined</em> Ergebnis.<br />
Grund dafür ist das der Mozillabrowser diesen Aufruf nicht unterstützt und dafür die Alternative:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1">$<span class="br0">&#40;</span>id<span class="br0">&#41;</span>.<span class="me1">textContent</span>; </div>
</li>
</ol>
</div>
</div>
<p>anbietet. </p>
<p>more info: <a href="http://developer.mozilla.org/en/docs/DOM:element.textContent">http://developer.mozilla.org/en/docs/DOM:element.textContent</a></p>
<p>Damit es in beiden Browsern funktioniert kann man folgenden Aufruf nutzen:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1">$<span class="br0">&#40;</span>id<span class="br0">&#41;</span>.<span class="me1">firstChild</span>.<span class="me1">nodeValue</span>; </div>
</li>
</ol>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2008/06/20/firefox-und-innertext/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Struts RadioBox-List</title>
		<link>http://blog.davidgraesser.de/2008/04/30/struts-radiobox-list/</link>
		<comments>http://blog.davidgraesser.de/2008/04/30/struts-radiobox-list/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 10:29:28 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[nested struts radiolist radio combo]]></category>

		<guid isPermaLink="false">http://blog.davidgraesser.de/?p=82</guid>
		<description><![CDATA[Um mit Struts eine Liste mit Radioboxen ausgeben zu können, muss man einen kleinen Kniff anwenden um den Value der Radiobox zu setzten: &#60;nested:iterate property=&#8220;myRadioOptions&#8221;&#62; &#60;nested:define id=&#8220;actualRadioValue&#8221; property=&#8220;radioValue&#8221; type=&#8220;java.lang.String&#8221;/&#62; &#60;nested:radio value=&#8216;&#60;%=actualRadioValue%&#62;&#8217; property=&#8220;myRadioList&#8221;/&#62; &#60;/nested:iterate&#62;]]></description>
			<content:encoded><![CDATA[<p>Um mit Struts eine Liste mit Radioboxen ausgeben zu können, muss man einen kleinen Kniff anwenden um den Value der Radiobox zu setzten:</p>
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1">&lt;nested:iterate property=<span class="st0">&#8220;myRadioOptions&#8221;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;nested:define id=<span class="st0">&#8220;actualRadioValue&#8221;</span> property=<span class="st0">&#8220;radioValue&#8221;</span> type=<span class="st0">&#8220;java.lang.String&#8221;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;nested:radio value=<span class="st0">&#8216;&lt;%=actualRadioValue%&gt;&#8217;</span> property=<span class="st0">&#8220;myRadioList&#8221;</span>/&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/nested:iterate&gt; </div>
</li>
</ol>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.davidgraesser.de/2008/04/30/struts-radiobox-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

