<?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>Nuevascreaciones &#187; Javascript</title>
	<atom:link href="http://nuevascreaciones.com/archives/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://nuevascreaciones.com</link>
	<description>De todo un poco</description>
	<lastBuildDate>Tue, 28 Apr 2009 09:01:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Creando componentes con JSFTemplating</title>
		<link>http://nuevascreaciones.com/archives/4</link>
		<comments>http://nuevascreaciones.com/archives/4#comments</comments>
		<pubDate>Mon, 27 Oct 2008 15:05:42 +0000</pubDate>
		<dc:creator>makensi</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java ServerFaces]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JSFTemplating]]></category>
		<category><![CDATA[Mootools]]></category>

		<guid isPermaLink="false">http://nuevascreaciones.com/?p=4</guid>
		<description><![CDATA[Recientemente me he tenido que realizar una evaluación de librerías y componentes JSF para desarrollar una aplicación web y pensé entonces en JSFTemplating, una librería que permite desarrollar componentes JSF de manera fácil y rápida. Tras las primeras búsquedas di con este tutorial. Jugué con esta librería durante una hora, descubrí que con ella podía [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente me he tenido que realizar una evaluación de librerías y componentes <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a> para desarrollar una aplicación web y pensé entonces en <a href="https://jsftemplating.dev.java.net/">JSFTemplating</a>, una librería que permite desarrollar componentes <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a> de manera fácil y rápida. Tras las primeras búsquedas di con este <a href="http://www.theserverside.com/tt/articles/article.tss%3Fl%3DJSFTemplateComponent">tutorial</a>.<a href="http://www.theserverside.com/tt/articles/article.tss%3Fl%3DJSFTemplateComponent"></a></p>
<p>Jugué con esta librería durante una hora, descubrí que con ella podía convertir librerías javascript de efectos en librerías de componentes <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a> y pensé en <a title="MooTools" href="http://mootools.net/">Mootools</a> una librería javascript muy liviana que siempre me ha gustado mucho.</p>
<p>Así que he escrito este pequeño tutorial el cual adjunta el código al final del mismo, de como montar y crear componentes con esta librería.</p>
<p><span id="more-4"></span>En primer lugar creamos un proyecto web en <a href="http://www.netbeans.org/">Netbeans</a> con soporte para <a href="http://java.sun.com/javaee/javaserverfaces/">Java ServerFaces</a> (Evitaremos tener que escribir la configuración del <strong>web.xml</strong>), descargamos la última Nightly de la página de <a href="https://jsftemplating.dev.java.net/">JSFTemplating</a> y  <a title="MooTools" href="http://mootools.net/">mootools</a>. El servidor sobre el cual trabajaremos es <a href="https://glassfish.dev.java.net/">Glassfish</a> v2 (por defecto viene con <a href="http://www.netbeans.org/">Netbeans</a>) y así las librerías <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a> serán incluidas  automáticamente en el <strong>classpath</strong> de nuestro proyecto.</p>
<p>Una vez tenemos todo lo necesario para trabajar, deberemos incorporar las librerías de <a href="https://jsftemplating.dev.java.net/">JSFTemplating</a> a nuestro proyecto:</p>
<ul>
<li><strong>jsftemplating-dt.jar</strong>: librería de etiquetado (design time) solo útil en desarrollo, no se incorpora al despliegue.</li>
<li><strong>jsftemplating.jar</strong>: librería base de <a href="https://jsftemplating.dev.java.net/">JSFTemplating</a>.</li>
</ul>
<p>Luego creamos bajo Web Pages un directorio js donde copiaremos el fichero mootools.js. Y ya solo nos queda decidir que componente javascript queremos crear yo en mi caso Accordion (me recuerda al de <a href="https://woodstock.dev.java.net/">Woodstock</a>).</p>
<p>Nos creamos un paquete y las clases para nuestro componente que en mi caso es:</p>
<ul>
<li><strong>com.nc.component </strong>
<ul>
<li><strong>Accordion.java</strong></li>
<li><strong>AccordionFactory.java</strong></li>
<li><strong>AccordionTab.java</strong></li>
<li><strong>AccordionTabFactory.java</strong></li>
</ul>
</li>
</ul>
<p>No explicare como están realizados por dentro ya que en el <a href="http://www.theserverside.com/tt/articles/article.tss%3Fl%3DJSFTemplateComponent">tutorial</a> de la URL del principio del articulo esta perfectamente descrito, solo tenemos que realizar la modificación oportuna para el fichero de template usado por el componente y el nombre del mismo. p.e en <strong>Accordion</strong>:</p>
<p><strong>setLayoutDefinitionKey(&#8220;tpl/accordion.jsp&#8221;);</strong></p>
<p>Creamos un directorio bajo Web Pages llamado tpl y en el creamos dos ficheros jsp llamados:</p>
<ul>
<li><strong>accordion.jsp</strong></li>
<li><strong>accordionTab.jsp</strong></li>
</ul>
<p>Una vez realizado registramos nuestros los componentes en nuestro <strong>faces-config.xml</strong>:<br />
<code><br />
&lt;component&gt;<br />
&lt;component-type&gt;com.nc.Accordion&lt;/component-type&gt;<br />
&lt;component-class&gt;com.nc.component.Accordion&lt;/component-class&gt;<br />
&lt;/component&gt;<br />
&lt;render-kit&gt;<br />
&lt;renderer&gt;<br />
&lt;component-family&gt;com.nc.Accordion&lt;/component-family&gt;<br />
&lt;renderer-type&gt;com.nc.Accordion&lt;/renderer-type&gt;<br />
&lt;renderer-class&gt;com.sun.jsftemplating.renderer.TemplateRenderer&lt;/renderer-class&gt;<br />
&lt;/renderer&gt;<br />
&lt;/render-kit&gt;</code><br />
<code><br />
&lt;component&gt;<br />
&lt;component-type&gt;com.nc.AccordionTab&lt;/component-type&gt;<br />
&lt;component-class&gt;com.nc.component.AccordionTab&lt;/component-class&gt;<br />
&lt;/component&gt;<br />
&lt;render-kit&gt;<br />
&lt;renderer&gt;<br />
&lt;component-family&gt;com.nc.AccordionTab&lt;/component-family&gt;<br />
&lt;renderer-type&gt;com.nc.AccordionTab&lt;/renderer-type&gt;<br />
&lt;renderer-class&gt;com.sun.jsftemplating.renderer.TemplateRenderer&lt;/renderer-class&gt;<br />
&lt;/renderer&gt;<br />
&lt;/render-kit&gt;<br />
</code><br />
Como podéis observar el nombre de componente difiere del nombre de paquete, tened cuidado. Una vez definidos los componentes podemos pasar a modificar las plantillas de estos:</p>
<p><strong>accordion.jsp</strong><br />
<code>"&lt;script language="javascript" type="text/javascript" src="js/mootools.js"&gt;&lt;/script&gt;<br />
"&lt;script language="javascript" type="text/javascript"&gt;<br />
"    window.onload=function(){<br />
"        var myAccordion = new Accordion($("$this{clientId}"),".toggler", ".element");<br />
"    }<br />
"&lt;/script&gt;<br />
"&lt;div id="$this{clientId}"&gt;<br />
&lt;!foreach _child : $this{children}&gt;<br />
&lt;component id="#{_child.id}" /&gt;<br />
&lt;/foreach&gt;<br />
"&lt;/div&gt;<br />
</code><br />
<strong>accordionTab.jsp</strong><br />
<code>"&lt;h3 class="toggler"&gt;$property{title}&lt;/h3&gt;<br />
"&lt;p class="element"&gt;<br />
&lt;!foreach _child : $this{children}&gt;<br />
&lt;component id="#{_child.id}" /&gt;<br />
&lt;/foreach&gt;<br />
"&lt;/p&gt;<br />
</code><br />
<a href="https://jsftemplating.dev.java.net/">JSFTemplating</a> dispone de un etiquetado propio para la definición de templates pero también podemos hacer uso de etiquetado <strong>h:</strong> y <strong>f:</strong>. Al principio de cada linea agrego una &#8221; que realiza la misma operación que un <strong>f:verbatim</strong> mostrando el código que le precede sin tratarlo. Los <strong>foreach</strong> nos permiten recorrer todos los tags hijos (<strong>html</strong>, componentes <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a>,&#8230;) y con una llamada a la etiqueta component hacemos que estos se muestren.</p>
<p>Teóricamente todo debería funcionar según lo especificado en el <a href="http://www.theserverside.com/tt/articles/article.tss%3Fl%3DJSFTemplateComponent">tutorial</a>, pero esto no es así ya que el empaquetado de la aplicación que aparece en ese tutorial hace uso de una tarea <a href="http://ant.apache.org/">ANT</a> denominada <strong>APT (Annotation Processor Tool)</strong>. Ya que no hacemos uso de esta tarea deberemos agregar al raíz de nuestro directorio de fuentes (en <a href="http://www.netbeans.org/">Netbeans</a> <strong>src/java</strong>) el directorio <strong>META-INF/jsftemplating</strong> y en el los ficheros:</p>
<ul>
<li><strong>UIComponentFactory.map</strong>: Aquí se definen las factorías para los componentes p.e.: <strong>mu\:accordion=com.nc.component.AccordionFactory</strong> (<strong>tag=factoria</strong>).</li>
<li><strong>Handler.map</strong>: Si usas manejadores aquí se definen las clases y los parámetros para el manejo de eventos (Véase el <a href="http://www.theserverside.com/tt/articles/article.tss%3Fl%3DJSFTemplateComponent">tutorial</a> o la documentación de eventos y manejadores de <a href="https://jsftemplating.dev.java.net/">JSFTemplating</a>).</li>
</ul>
<p>Una vez terminemos basta con escribir en nuestro <strong>index.jsp</strong>:<br />
<code><br />
&lt;mu:accordion id="accordion"&gt;<br />
&lt;mu:accordionTab title="Titulo 1"&gt;<br />
&lt;f:verbatim&gt;<br />
Esto es el texto que sera incorporado al titulo 1,<br />
&lt;/f:verbatim&gt;<br />
&lt;/mu:accordionTab&gt;<br />
&lt;mu:accordionTab title="Titulo 2"&gt;<br />
&lt;f:verbatim&gt;<br />
como se observa se puede hacer uso de etiquetado &amp;lt;f: y &amp;lt;h:,<br />
&lt;/f:verbatim&gt;<br />
&lt;/mu:accordionTab&gt;<br />
&lt;mu:accordionTab title="Titulo 3"&gt;<br />
&lt;h:outputText value="sin problema alguno." /&gt;<br />
&lt;/mu:accordionTab&gt;<br />
&lt;/mu:accordion&gt;<br />
</code></p>
<p>El proyecto <a href="http://www.netbeans.org/">Netbeans</a> del ejemplo podéis descargarlo <a rel="attachment wp-att-12" href="http://nuevascreaciones.com/archives/4/jsftemplating_example">aquí</a>.</p>
<p>Espero que os sea de ayuda.</p>
]]></content:encoded>
			<wfw:commentRss>http://nuevascreaciones.com/archives/4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
