<?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; Java ServerFaces</title>
	<atom:link href="http://nuevascreaciones.com/archives/tag/java-serverfaces/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>Woodstock y Facelets una convivencia extraña</title>
		<link>http://nuevascreaciones.com/archives/18</link>
		<comments>http://nuevascreaciones.com/archives/18#comments</comments>
		<pubDate>Mon, 03 Nov 2008 11:00:06 +0000</pubDate>
		<dc:creator>makensi</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Facelets]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java ServerFaces]]></category>
		<category><![CDATA[Woodstock]]></category>

		<guid isPermaLink="false">http://nuevascreaciones.com/?p=18</guid>
		<description><![CDATA[En el último proyecto en el que estuve trabajando tome la decisión de hacer uso la librería de componentes JSF, Woodstock. Antes de comenzar el desarrollo pensé en hacer uso de una librería para el desarrollo de templates compatible con JSF. Pensé en Struts Tiles y Facelets y tras un rato evaluándolos(basándome en mi experiencia [...]]]></description>
			<content:encoded><![CDATA[<p>En el último proyecto en el que estuve trabajando tome la decisión de hacer uso la librería de componentes <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a>, <a href="https://woodstock.dev.java.net/index.html">Woodstock</a>. Antes de comenzar el desarrollo pensé en hacer uso de una librería para el desarrollo de templates compatible con <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a>. Pensé en <a href="http://struts.apache.org/1.x/struts-tiles/">Struts Tiles</a> y <a href="https://facelets.dev.java.net/">Facelets</a> y tras un rato evaluándolos(basándome en mi experiencia con cada uno) me decante por <a href="https://facelets.dev.java.net/">Facelets</a> por varios motivos:  <span id="more-18"></span></p>
<ul>
<li>No se tiene que configurar cada página en el <strong>tiles-conf</strong>. Es cierto puede ser una tontería pero la razón de peso para mi es que, este oculta e incrementa el tiempo necesario para la compresión de proyectos que ya están desarrollados.</li>
<li>Solo se hace uso de una tecnología (<a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a>), lo cual para mi es una razón de peso. A mayor número de tecnologías usadas, mayor es la complejidad y la dificultad de compresión del proyecto web y claro esta en el desarrollo de aplicaciones web ya intervienen unas cuantas de tecnologías como para complicarlo más.</li>
<li>El trabajo con <a href="https://facelets.dev.java.net/">Facelets</a> se asimila mucho al uso de templates con <a href="http://es.wikipedia.org/wiki/XSLT">XSLT</a> (en lo cual me siento muy cómodo). Dispones de elementos como <strong>ui:composion</strong> en vez de <strong>xsl:call-templates</strong>, y <strong>xsl:apply</strong> templates y siempre conoces que ficheros de templates usa tu página.</li>
</ul>
<p>Tras descargarme las últimas versiones de ambas librerías, la configuración no fue un problema ya que solo debemos agregar estas lineas a nuestro <strong>web.xml</strong> para configurar el gestor de temas de <a href="https://woodstock.dev.java.net/index.html">Woodstock</a> y el filtro de subida de ficheros: <code> </code></p>
<p><code>&lt;filter&gt;<br />
&lt;filter-name&gt;UploadFilter&lt;/filter-name&gt;<br />
&lt;filter-class&gt;com.sun.webui.jsf.util.UploadFilter&lt;/filter-class&gt;<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;maxSize&lt;/param-name&gt;<br />
&lt;param-value&gt;1000000&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
&lt;init-param&gt;<br />
&lt;param-name&gt;sizeThreshold&lt;/param-name&gt;<br />
&lt;param-value&gt;4096&lt;/param-value&gt;<br />
&lt;/init-param&gt;<br />
&lt;/filter&gt;<br />
&lt;filter-mapping&gt;<br />
&lt;filter-name&gt;UploadFilter&lt;/filter-name&gt;<br />
&lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;<br />
&lt;/filter-mapping&gt; </code> <code><br />
&lt;servlet&gt;<br />
&lt;servlet-name&gt;ThemeServlet&lt;/servlet-name&gt;<br />
&lt;servlet-class&gt;com.sun.webui.theme.ThemeServlet&lt;/servlet-class&gt;<br />
&lt;/servlet&gt;<br />
&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;ThemeServlet&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;/theme/*&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;</code></p>
<p>Y en el caso de <a href="https://facelets.dev.java.net/">Facelets</a> que es un poco más complejo solo necesitamos agregar los siguientes parámetros de configuración al <strong>web.xml</strong>:</p>
<p><code> &lt;context-param&gt;<br />
&lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;<br />
&lt;param-value&gt;.xhtml&lt;/param-value&gt;<br />
&lt;/context-param&gt;<br />
&lt;context-param&gt;<br />
&lt;param-name&gt;facelets.DEVELOPMENT&lt;/param-name&gt;<br />
&lt;param-value&gt;false&lt;/param-value&gt;<br />
&lt;/context-param&gt;<br />
&lt;context-param&gt;<br />
&lt;param-name&gt;facelets.SKIP_COMMENTS&lt;/param-name&gt;<br />
&lt;param-value&gt;true&lt;/param-value&gt;<br />
&lt;/context-param&gt; </code></p>
<p>Y el siguiente manejador de vistas al <strong>faces-config.xml</strong>:  <code></p>
<p>&lt;application&gt;<br />
&lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;<br />
&lt;/application&gt;</code></p>
<p>Con esto habremos configurado todo lo necesario y los que uséis <a href="http://www.netbeans.org/">NetBeans</a> no tendréis ni que configurar esto ya que durante la creación de vuestro proyecto Web una vez seleccionados los frameworks <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a> y <a href="https://facelets.dev.java.net/">Facelets</a> esta configuración sera agregada.  Por norma las configuraciones de <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a> suele disponer de un mapeo del servlet sobre <strong>/faces/*</strong> o <strong>*.jsf</strong>, si os fijáis en el parámetro <strong>javax.faces.DEFAULT_SUFFIX</strong> mapea <strong>*.xhtml</strong>. ¿Qué significa esto?:</p>
<ol>
<li> Todas las peticiones que vayan contra un fichero con extensión <strong>*.xhtml</strong> serán usadas como ficheros de templates.</li>
<li>Todas las peticiones que vayan contra un fichero con extensión <strong>*.jsf</strong> (si usaste esta configuración) o estén en la ruta <strong>/faces/*</strong> (si usaste esta) serán tratados como páginas <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a> normales.</li>
</ol>
<p>El resto de parámetros de como <strong>facelets.DEVELOPMENT</strong> para mostrar los errores y trazas vía web (para esto ya tenemos una bonita consola en nuestro IDE) y <strong>facelets.SKIP_COMMENTS</strong> (se salta cualquier comentario sin tratarlo) no son de importancia (de hecho podemos trabajar sin ellos ya que disponen de configuración por defecto en la librería).  Bien ahora viene lo interesante, creamos un fichero <strong>template.xhtml</strong> con el siguiente contenido en el raíz de nuestro sitio web: <code> </code></p>
<p><code>&lt;f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:webuijsf="http://www.sun.com/webui/webuijsf"&gt;<br />
&lt;webuijsf:page&gt;<br />
&lt;webuijsf:html&gt;<br />
&lt;webuijsf:head&gt;<br />
&lt;f:facet name="title"&gt;<br />
&lt;ui:insert name="title"&gt;Titulo por defecto&lt;/ui:insert&gt; </code><code><br />
&lt;/f:facet&gt;<br />
&lt;/webuijsf:head&gt;<br />
&lt;webuijsf:body&gt;<br />
&lt;webuijsf:form id="indexForm"&gt;<br />
&lt;ui:insert name="body"&gt;Cuerpo por defecto&lt;/ui:insert&gt;<br />
&lt;/webuijsf:form&gt;<br />
&lt;/webuijsf:body&gt;<br />
&lt;/webuijsf:html&gt;<br />
&lt;/webuijsf:page&gt;<br />
&lt;/f:view&gt;</code></p>
<p>Y otro fichero <strong>index.jsp</strong> con: <code> </code></p>
<p><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ui="http://java.sun.com/jsf/facelets"&gt;<br />
&lt;ui:composition template="/template.xhtml"&gt;<br />
&lt;ui:define name="title"&gt;Texto de titulo&lt;/ui:define&gt;<br />
&lt;ui:define name="body"&gt;Texto de cuerpo&lt;/ui:define&gt;<br />
&lt;/ui:composition&gt;<br />
&lt;/jsp:root&gt;</code></p>
<p>Paso a describiros que es lo que hacemos en cada fichero:</p>
<ol>
<li><strong>template.xhtml</strong>: Este fichero es la plantilla y dispone de una vista de <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a> en la que agregamos el cuerpo de nuestra pagina que como se observa hace uso de los tags de <a href="https://woodstock.dev.java.net/index.html">Woodstock</a>. En determinadas posiciones como son el título de la página agregamos las etiquetas <strong>ui:insert</strong> con un nombre que más tarde usaremos para remplazar su contenido.</li>
<li><strong>index.jsp</strong>: En el disponemos de una llamada <strong>ui:composion</strong> con el atributo template apuntando a nuestro fichero de template <strong>template.xhtml</strong>. Seguidamente dispone de ui:define apuntando a los <strong>ui:insert</strong> de nuestro fichero<strong> template.xhtml</strong>(igual que un <strong>xsl:call-template</strong> con sus <strong>xsl:param</strong>) y con los nuevos valores(no tiene por que ser texto puede ser etiquetado <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a>).</li>
</ol>
<p>Como se observa lo que conseguimos de este modo es disponer de un cuerpo único para todas nuestra páginas. Algo importante al respecto de <a href="https://facelets.dev.java.net/">Facelets</a> es que se permiten realizar <strong>ui:define</strong> en nuestro ficheros jsp a atributos que estan en otros <strong>ui:composion</strong> de nuestro template, esto quiere decir que podemos combinar varios templates a través de llamadas <strong>ui:composion</strong> e insertar solo las partes que nos hacen falta.</p>
<h3>La convivencia</h3>
<p>El uso conjunto de <a href="https://facelets.dev.java.net/">Facelets</a> y <a href="https://woodstock.dev.java.net/index.html">Woodstock</a> cambia los atributos del segundo. ¿Que quiere decir esto?, pues que si creamos por ejemplo:</p>
<ul>
<li> Un <strong>webuijsf:button</strong> este deberá usar atributos <strong>action</strong> en vez de <strong>actionExpression</strong>.</li>
<li>Un <strong>webuijsf:upload</strong> deberá disponer de un atributo <strong>value</strong> en vez de un <strong>fileUploaded</strong> y además obligara a insertar un <strong>enctype=&#8221;multipart/form-data&#8221;</strong> en nuestro <strong>webuijsf:form</strong> para que funcione.</li>
</ul>
<p>Solo puedo deciros que el proyecto <a href="https://woodstock.dev.java.net/index.html">Woodstock</a> tiene modificada su API (estos atributos que cambian están marcados como <strong>DEPRETATED</strong>) y que cuando trabaja con <a href="https://facelets.dev.java.net/">Facelets</a> estos cambian (Un par de horas o tres me dan la razón <img src='http://nuevascreaciones.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ).  Podéis descargaros el proyecto de <a href="http://www.netbeans.org/">NetBeans</a> (se necesitan los plugins <a href="http://www.netbeans.org/kb/60/web/intro.html">Visual Web JSF Components</a> y <a href="https://facelets.dev.java.net/">Facelets</a> para disponer de las librerías) <a rel="attachment wp-att-31" href="http://nuevascreaciones.com/archives/18/woodstock_facelets_example">aquí</a>.  Espero que os sirva de algo.  <img src='http://nuevascreaciones.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://nuevascreaciones.com/archives/18/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
