<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>JAVA_HOME</title>
	<atom:link href="http://javahome.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://javahome.wordpress.com</link>
	<description>Java, IT, MTB</description>
	<lastBuildDate>Thu, 30 Jun 2011 22:40:36 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='javahome.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>JAVA_HOME</title>
		<link>http://javahome.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://javahome.wordpress.com/osd.xml" title="JAVA_HOME" />
	<atom:link rel='hub' href='http://javahome.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Android</title>
		<link>http://javahome.wordpress.com/2011/07/01/android/</link>
		<comments>http://javahome.wordpress.com/2011/07/01/android/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 22:39:12 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Motorola]]></category>

		<guid isPermaLink="false">https://javahome.wordpress.com/2011/07/01/android/</guid>
		<description><![CDATA[Motorola Defy to na prawdę fajny telefon. Trochę szkoda, że nie ma Androida 2.3, a tylko 2.2, ale i tak jest zajebista. SDK do Androida już zainstalowane. Wtyczka ADT do Eclipse&#8217;a też już jest. Ściągnąłem też przebrandowanego przez Motorolę Eclipsa pod nazwą MOTODEV Studio for Android z jakimiś dodatkami mającymi ułatwić tworzenie aplikacji &#8211; ciekawe, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javahome.wordpress.com&amp;blog=3571764&amp;post=23&amp;subd=javahome&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Motorola Defy to na prawdę fajny telefon. Trochę szkoda, że nie ma Androida 2.3, a tylko 2.2, ale i tak jest zajebista.<br />
<a href="http://developer.android.com/sdk">SDK do Androida</a> już zainstalowane. Wtyczka <a href="http://developer.android.com/sdk/eclipse-adt.html">ADT</a> do Eclipse&#8217;a też już jest. Ściągnąłem też przebrandowanego przez Motorolę Eclipsa pod nazwą <a href="http://developer.motorola.com/docstools/motodevstudio/">MOTODEV Studio for Android</a> z jakimiś dodatkami mającymi ułatwić tworzenie aplikacji &#8211; ciekawe, które środowisko jest lepsze.<br />
Czas napisać pierwszą mobilną aplikację.</p>
<p><span class="post_sig">Posted from WordPress for Android</span></p>
<br />Filed under: <a href='http://javahome.wordpress.com/category/android/'>Android</a> Tagged: <a href='http://javahome.wordpress.com/tag/android/'>Android</a>, <a href='http://javahome.wordpress.com/tag/eclipse/'>Eclipse</a>, <a href='http://javahome.wordpress.com/tag/motorola/'>Motorola</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javahome.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javahome.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javahome.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javahome.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javahome.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javahome.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javahome.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javahome.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javahome.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javahome.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javahome.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javahome.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javahome.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javahome.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javahome.wordpress.com&amp;blog=3571764&amp;post=23&amp;subd=javahome&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javahome.wordpress.com/2011/07/01/android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8200f571585028bb6e1700af5c2c74bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jarek</media:title>
		</media:content>
	</item>
		<item>
		<title>Ciekawy artykuł o perspektywach zmaterializowanych w PostgreSQL</title>
		<link>http://javahome.wordpress.com/2008/06/18/ciekawy-artykul-o-perspektywach-zmaterializowanych-w-postgresql/</link>
		<comments>http://javahome.wordpress.com/2008/06/18/ciekawy-artykul-o-perspektywach-zmaterializowanych-w-postgresql/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 23:53:10 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Bazy danych]]></category>
		<category><![CDATA[perspektywy zmaterializowane]]></category>

		<guid isPermaLink="false">http://javahome.wordpress.com/?p=12</guid>
		<description><![CDATA[PostgreSQL niestety nie ma wbudowanej obsługi perspektyw zmaterializowanych, ale jak się okazuje niektóre ich typy można łatwo zrealizować za pomocą zwykłych widoków, tabel i odpowiednich triggerów. Jak to zrobić opisane jest w artykule Jonathana Gardnera, który znajduje się tutaj: http://www.jonathangardner.net/tech/w/PostgreSQL/Materialized_Views.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javahome.wordpress.com&amp;blog=3571764&amp;post=12&amp;subd=javahome&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>PostgreSQL niestety nie ma wbudowanej obsługi perspektyw zmaterializowanych, ale jak się okazuje niektóre ich typy można łatwo zrealizować za pomocą zwykłych widoków, tabel i odpowiednich triggerów. Jak to zrobić opisane jest w artykule Jonathana Gardnera, który znajduje się tutaj: <a href="http://www.jonathangardner.net/tech/w/PostgreSQL/Materialized_Views">http://www.jonathangardner.net/tech/w/PostgreSQL/Materialized_Views</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/javahome.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/javahome.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javahome.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javahome.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javahome.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javahome.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javahome.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javahome.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javahome.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javahome.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javahome.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javahome.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javahome.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javahome.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javahome.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javahome.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javahome.wordpress.com&amp;blog=3571764&amp;post=12&amp;subd=javahome&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javahome.wordpress.com/2008/06/18/ciekawy-artykul-o-perspektywach-zmaterializowanych-w-postgresql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8200f571585028bb6e1700af5c2c74bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jarek</media:title>
		</media:content>
	</item>
		<item>
		<title>Sortowanie w PostgreSQL</title>
		<link>http://javahome.wordpress.com/2008/06/10/sortowanie-w-postgresql/</link>
		<comments>http://javahome.wordpress.com/2008/06/10/sortowanie-w-postgresql/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 01:15:10 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[locale]]></category>
		<category><![CDATA[sortowanie]]></category>

		<guid isPermaLink="false">http://javahome.wordpress.com/?p=10</guid>
		<description><![CDATA[Sortowanie w PostgreSQL uwzględniające zasady obowiązujące dla konkretnego języka może być dość kłopotliwe. Niestety PostgreSQL nie pozwala na dynamiczne zmienianie sposobu sortowania tak jak jest to możliwe w MySQL (klauzula COLLATE) albo w Oraclu (parametr sesji NLS_SORT), tylko wymaga podania sposobu sortowania podczas tworzenia klastra (parametry &#8211;locale, &#8211;lc-collate i poniekąd &#8211;lc-ctype polecenia initdb) i później [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javahome.wordpress.com&amp;blog=3571764&amp;post=10&amp;subd=javahome&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sortowanie w PostgreSQL uwzględniające zasady obowiązujące dla konkretnego języka może być dość kłopotliwe. Niestety PostgreSQL nie pozwala na dynamiczne zmienianie sposobu sortowania tak jak jest to możliwe w MySQL (klauzula COLLATE) albo w Oraclu (parametr sesji NLS_SORT), tylko wymaga podania sposobu sortowania podczas tworzenia klastra (parametry &#8211;locale, &#8211;lc-collate i poniekąd &#8211;lc-ctype polecenia initdb) i później już parametry te pozostają niezmienne.</p>
<p>Jest to niewątpliwa wada jeśli chciałoby się przechowywać w bazie dane w wielu językach. Sytuacje poprawia nieco fakt, że przy locale bazujących na normie ISO14651 (a jest to chyba większość locales w nowoczesnych linuxach) sortowanie w wielu językach jest w miarę poprawne bez względu na wybrane locale.</p>
<p>Np. w przypadku Ubuntu 7 i 8 polskie napisy sortują się poprawnie zarówno przy locale pl_PL.utf8 jak i en_US.utf8, co można sprawdzić wykonując polecenia (PostgreSQL będzie sortował identycznie przy tym samym locale):</p>
<p><code>echo -e "ą\na\nb\nc\nć\nł\nz\nż\nź" |LC_ALL=pl_PL.utf8 sort</code><br />
<code>echo -e "ą\na\nb\nc\nć\nł\nz\nż\nź" |LC_ALL=en_US.utf8 sort</code></p>
<p>Natomiast przy locale ustawionym na POSIX lub C sortowanie nie będzie poprawne, ponieważ w tym przypadku porównywane są poprostu binarne kody znaków i polskie litery lądują na końcu.</p>
<p>Wróćmy na razie do PostgreSQL. Jeżeli podczas wykonywania initdb nie podaliśmy explicite parametrów &#8211;locale, &#8211;lc-collate i/lub &#8211;lc-ctype to initdb pobiera wartości tych parametrów ze zmiennych systemowych LC_ALL w pierwszej kolejności, LC_COLLATE oraz LC_CTYPE jeśli LC_ALL nie jest ustawione i LANG jeśli poprzednie zmienne również nie były ustawione. Jeśli żadna z tych zmiennych nie jest ustawiona to locale jest ustawiane na C.</p>
<p>Czyli jeśli korzystamy z klastra stworzonego np. automatycznie przy instalacji PostgreSQL, to może się zdażyć, że locale będzie inne niż byśmy sobie tego życzyli. Najlepiej w tami wypadku klaster usunąć (po wkonaniu backupu) i stworzyć ręcznie od nowa z odpowiednim locale. W Ubuntu można się zamiast initdb posłużyć wygodniejszym pg_createcluster.</p>
<p>OK, ustawiliśmy sobie locale na pl_PL.utf8 i badamy dalej sortowanie (dla ułatwienia eksperymentów posługuję się dalej kombinacją poleceń echo/sort &#8211; PostgreSQL będzie sortował tak samo):</p>
<p><code>echo -e "język polski\njęzyk angielski\njęzykowy\njęzyk-language\njęzyka\njęzyk" |LC_ALL=pl_PL.utf8 sort</code></p>
<p>W efekcie dostajemy taki porządek sortowania:</p>
<pre>język
języka
język-language
językowy
język angielski
język polski</pre>
<p>Nie wygląda to najlepiej i nie jest zgodne z polskimi zasadami sortowania (są one dość dobrze opisane np. tutaj: <a title="Reguły sortowania" href="http://www.ia.pw.edu.pl/~wujek/tex/idx/porzadek.html#reguly" target="_blank">http://www.ia.pw.edu.pl/~wujek/tex/idx/porzadek.html#reguly</a>). Lepiej by było gdyby napisy zostały posortowane następująco:</p>
<pre>język
język angielski
język polski
język-language
języka
językowy</pre>
<p>Jak coś takiego osiągnąć? Trzeba nieco zmienić plik z definicją locale.</p>
<p>Pliki źródłowe definiujące zasady obowiązujące dla poszczególnych locale znajdują się w katalogu /usr/share/i18n/locales. Najlepiej nie zmieniać standardowego polskiego locale pl_PL tylko stworzyć jego inny wariant np. pl_PL@bettersort. W tym celu kopijemy plik pl_PL i zabieramy się za jego edycję.</p>
<p>Interesuje nas sekcja LC_COLLATE a szczególnie fragment:</p>
<p><code>reorder-after &lt;U00A0&gt;<br />
&lt;U0020&gt; &lt;U0020&gt;;IGNORE;&lt;U0020&gt;;&lt;U0020&gt;</code></p>
<p>Zmieniamy go na następujący:</p>
<p><code>reorder-after &lt;RES-1&gt;<br />
&lt;U0020&gt; &lt;U0020&gt;;IGNORE;&lt;U0020&gt;;&lt;U0020&gt;<br />
&lt;U00A0&gt; &lt;U0020&gt;;IGNORE;&lt;U0020&gt;;&lt;U00A0&gt;<br />
&lt;U002D&gt; &lt;U002D&gt;;IGNORE;&lt;U002D&gt;;&lt;U002D&gt;<br />
&lt;U2010&gt; &lt;U002D&gt;;IGNORE;&lt;U002D&gt;;&lt;U2010&gt;<br />
&lt;U2011&gt; &lt;U002D&gt;;IGNORE;&lt;U002D&gt;;&lt;U2011&gt;<br />
&lt;U2012&gt; &lt;U002D&gt;;IGNORE;&lt;U002D&gt;;&lt;U2012&gt;<br />
&lt;U2013&gt; &lt;U002D&gt;;IGNORE;&lt;U002D&gt;;&lt;U2013&gt;<br />
&lt;U2212&gt; &lt;U002D&gt;;IGNORE;&lt;U002D&gt;;&lt;U2212&gt;</code></p>
<p>Co to oznacza? Symbol RES-1 to symbol specjalny znajdujący się w porządku sortowania przed wszystkimi innymi znakami. Polecenie reorder-after &lt;RES-1&gt; powoduje wstawienie w porządku sortowania symboli znajdujących się w kolejnych linijkach właśnie za symbolem RES-1, a więc na pewno przed wszystkimi innymi znakami. Dwie pierwsze linijki zaczynające się od symboli &lt;U0020&gt; i &lt;U00A0&gt; są odpowiedzialne za sortowanie zwykłej spacji i spacji nieroździlającej (nbsp). Kolejne linijki to różne wersje dywizu i myślnika.</p>
<p>Po wyedytowaniu tego pliku należy jeszcze dopisać go do listy obsługiwanych locale  znajdującej się w pliku /usr/share/i18n/SUPPORTED. Dodajemy tam wpis:</p>
<p><code>pl_PL.UTF-8@bettersort UTF-8</code></p>
<p>Następnie trzeba skompilować nasze nowe locale poleceniem:</p>
<p><code>sudo locale-gen pl_PL.UTF-8@bettersort</code></p>
<p>Sprawdzamy jeszcze czy wszystko się udało poleceniem: locale -a i testujemy sortowanie:</p>
<p><code>echo -e "język polski\njęzyk angielski\njęzykowy\njęzyk-language\njęzyka\njęzyk" |LC_ALL=pl_PL@bettersort.utf8 sort</code></p>
<p>Powinniśmy dostać poprawne sortowanie.</p>
<p>Pozstaje nam jeszcze stworzenie od nowa klsatra PostgreSQL poleceniem:</p>
<p><code>sudo pg_createcluster --locale=pl_PL.utf8@bettersort --lc-messages=en_US.utf8 --start 8.3 main</code></p>
<p>W tak stworzonej bazie sortowanie powinno być poprawne.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/javahome.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/javahome.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javahome.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javahome.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javahome.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javahome.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javahome.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javahome.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javahome.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javahome.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javahome.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javahome.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javahome.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javahome.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javahome.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javahome.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javahome.wordpress.com&amp;blog=3571764&amp;post=10&amp;subd=javahome&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javahome.wordpress.com/2008/06/10/sortowanie-w-postgresql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8200f571585028bb6e1700af5c2c74bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jarek</media:title>
		</media:content>
	</item>
		<item>
		<title>Springowe beany w JSP</title>
		<link>http://javahome.wordpress.com/2008/04/25/springowe-beany-w-jsp/</link>
		<comments>http://javahome.wordpress.com/2008/04/25/springowe-beany-w-jsp/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 21:37:52 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://javahome.wordpress.com/?p=8</guid>
		<description><![CDATA[Na początek coś prostego, ale przydatnego. Tag JSP, który umożliwia dostanie się do springowego beana bezpośrednio w kodzie strony JSP. Tag używamy w następujący sposób: Ewentualnie dodatkowo można dodać parametr type, dzięki czemu tag sprawdzi dodatkowo czy typ pobranego beana zgadza się z oczekiwanym i w przeciwnym wypadku rzuci wyjątek BeanNotOfRequiredTypeException. Kod taga: Ponieważ tag [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javahome.wordpress.com&amp;blog=3571764&amp;post=8&amp;subd=javahome&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Na początek coś prostego, ale przydatnego. Tag JSP, który umożliwia dostanie się do springowego beana bezpośrednio w kodzie strony JSP.</p>
<p>Tag używamy w następujący sposób:</p>
<p><pre class="brush: xml;">
&lt;js:useSpringBean id=&quot;nazwaZmiennej&quot; name=&quot;nazwaBeana&quot;/&gt;
</pre></p>
<p>Ewentualnie dodatkowo można dodać parametr <em>type</em>, dzięki czemu tag sprawdzi dodatkowo czy typ pobranego beana zgadza się z oczekiwanym i w przeciwnym wypadku rzuci wyjątek <em>BeanNotOfRequiredTypeException</em>.</p>
<p>Kod taga:</p>
<p><pre class="brush: java;">
public class UseSpringBeanTag extends TagSupport {

    protected String name = null;
    protected String type = null;

    @Override
    public int doStartTag() throws JspException {
        ServletContext servletContext = pageContext.getServletContext();
        ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
        Object bean = null;
        if (type == null) {
            bean = applicationContext.getBean(name);
        } else {
            try {
                bean = applicationContext.getBean(name, Class.forName(type));
            } catch (ClassNotFoundException ex) {
                throw new JspException(ex);
            }
        }
        pageContext.setAttribute(id, bean);
        return SKIP_BODY;
    }

    @Override
    public void release() {
        super.release();
        name = null;
        type = null;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}
</pre></p>
<p>Ponieważ tag ten udostępnia w stronie JSP zmienną, pod którą dostępny będzie pobrany ze springa bean, dodatkowo potrzebna jest klasa dziedzicząca z TagExtraInfo dostarczająca informacji o zmiennej:</p>
<p><pre class="brush: java;">
public class UseSpringBeanTei extends TagExtraInfo {

	@Override
	public VariableInfo[] getVariableInfo(TagData data) {

		String id = data.getAttributeString(&quot;id&quot;);
		String type = data.getAttributeString(&quot;type&quot;);

		if (id != null) {
			if (type == null) {
				type = &quot;java.lang.Object&quot;;
			}

			return new VariableInfo[] { new VariableInfo(id, type, true,
					VariableInfo.AT_END) };
		}

		return super.getVariableInfo(data);
	}
}
</pre></p>
<p>Dodatkowo oczywiście potrzebujemy stworzyć plik TLD zawierający specyfikacje naszego taga:</p>
<p><pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

&lt;!DOCTYPE taglib PUBLIC &quot;-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN&quot; &quot;http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd&quot;&gt;
&lt;taglib&gt;

	&lt;tlib-version&gt;1.0&lt;/tlib-version&gt;
	&lt;jsp-version&gt;1.2&lt;/jsp-version&gt;
	&lt;short-name&gt;spring-jsp-tag&lt;/short-name&gt;

	&lt;tag&gt;
		&lt;name&gt;useSpringBean&lt;/name&gt;
		&lt;tag-class&gt;eu.bojar.web.taglib.UseSpringBeanTag&lt;/tag-class&gt;
		&lt;tei-class&gt;eu.bojar.web.taglib.UseSpringBeanTei&lt;/tei-class&gt;
		&lt;body-content&gt;empty&lt;/body-content&gt;
		&lt;attribute&gt;
			&lt;name&gt;id&lt;/name&gt;
			&lt;required&gt;true&lt;/required&gt;
			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
		&lt;/attribute&gt;
		&lt;attribute&gt;
			&lt;name&gt;name&lt;/name&gt;
			&lt;required&gt;true&lt;/required&gt;
			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
		&lt;/attribute&gt;
		&lt;attribute&gt;
			&lt;name&gt;type&lt;/name&gt;
			&lt;required&gt;false&lt;/required&gt;
			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
		&lt;/attribute&gt;
	&lt;/tag&gt;

&lt;/taglib&gt;
</pre></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/javahome.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/javahome.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javahome.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javahome.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javahome.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javahome.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javahome.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javahome.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javahome.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javahome.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javahome.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javahome.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javahome.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javahome.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javahome.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javahome.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javahome.wordpress.com&amp;blog=3571764&amp;post=8&amp;subd=javahome&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://javahome.wordpress.com/2008/04/25/springowe-beany-w-jsp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8200f571585028bb6e1700af5c2c74bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jarek</media:title>
		</media:content>
	</item>
	</channel>
</rss>
