<?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 &#187; JSP</title>
	<atom:link href="http://javahome.wordpress.com/tag/jsp/feed/" rel="self" type="application/rss+xml" />
	<link>http://javahome.wordpress.com</link>
	<description>Java, IT, MTB</description>
	<lastBuildDate>Sat, 29 Aug 2009 18:18:54 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='javahome.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/1b4f37893003f1a4f8f9fdac27dfad67?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>JAVA_HOME &#187; JSP</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" />
		<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:

&#60;js:useSpringBean id=&#34;nazwaZmiennej&#34; name=&#34;nazwaBeana&#34;/&#62;

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:

public class UseSpringBeanTag extends [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=javahome.wordpress.com&blog=3571764&post=8&subd=javahome&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><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>
<pre class="brush: xml;">
&lt;js:useSpringBean id=&quot;nazwaZmiennej&quot; name=&quot;nazwaBeana&quot;/&gt;
</pre>
<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>
<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>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>
<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>Dodatkowo oczywiście potrzebujemy stworzyć plik TLD zawierający specyfikacje naszego taga:</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>
<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/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&blog=3571764&post=8&subd=javahome&ref=&feed=1" /></div>]]></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>