<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;DUEERHY9fip7ImA9WxNUGU4.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894</id><updated>2009-11-11T03:06:45.866-08:00</updated><title>Anécdotas de las Curvas del Seno</title><subtitle type="html">Software Libre, Programación, Informática y #Bacil</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>362</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/AnecdotasDeLasCurvasDelSeno" type="application/atom+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">AnecdotasDeLasCurvasDelSeno</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;DkQFSXk8fip7ImA9WxNVEko.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-8312659709185483102</id><published>2009-10-22T21:47:00.001-07:00</published><updated>2009-10-22T22:05:18.776-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-22T22:05:18.776-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="primera persona" /><category scheme="http://www.blogger.com/atom/ns#" term="nexuiz" /><category scheme="http://www.blogger.com/atom/ns#" term="juego" /><category scheme="http://www.blogger.com/atom/ns#" term="mac osx" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="software libre" /><title>Combate mortal con Nexuiz</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cyphergaming.net/database/upload/nexuiz_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 107px; height: 103px;" src="http://cyphergaming.net/database/upload/nexuiz_logo.jpg" alt="" border="0" /&gt;&lt;/a&gt;Hace unos días la mara del trabajo me ha enviciado con el juego Unreal Tournament, así que era mi obligación encontrar algún juego similar de combate en primera persona, de buena calidad y sobre todo que fuera software libre.&lt;br /&gt;&lt;br /&gt;Pues googleando por alli me tope con &lt;a href="http://www.alientrap.org/nexuiz/"&gt;Nexuiz&lt;/a&gt; que practimente parece una copia de Unreal, pero que es lo mas importante que nos ofrece &lt;a href="http://www.alientrap.org/nexuiz/"&gt;Nexuiz&lt;/a&gt;?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Esta disponible para Windows, GNU/Linux y Mac OS X.&lt;/li&gt;&lt;li&gt;Es multijugador soporta hasta 64 jugadores simultaneamente.&lt;/li&gt;&lt;li&gt;Puede realizarse batallas con bots.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;¿Como obtenerlo?&lt;br /&gt;&lt;br /&gt;Si utilizan sistemas basados en Debian así como Ubuntu, el juego esta disponible desde los mismos repositorios y se intala haciendo nada mas:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install nexuiz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Solo hay un detalle, que la versión que esta en los repositorios es la 2.4.2, pero si lo descargamos directamente desde la página tendremos la versión 2.5.2, al descargarlo directamente desde la página tendremos una archivo que pesa aproximadamente casi 1 GB pero allí viene incluidas los ejecutables para las diferentes plataformas anteriormente mencionadas, nomas consiste en descomprimir y jugar eso es todo.&lt;br /&gt;&lt;br /&gt;Así que invito a que descarguen el juego para darnos riata, adjunto un video para que se entusiasmen.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4E5kRPp9m3E&amp;amp;hl=es&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/4E5kRPp9m3E&amp;amp;hl=es&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-8312659709185483102?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/8312659709185483102/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=8312659709185483102" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8312659709185483102?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8312659709185483102?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/10/combate-mortal-con-nexuiz.html" title="Combate mortal con Nexuiz" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;CUUGQnw8eyp7ImA9WxNXF00.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-2208086333405194934</id><published>2009-10-04T12:27:00.000-07:00</published><updated>2009-10-04T17:40:23.273-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-04T17:40:23.273-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="jpa" /><category scheme="http://www.blogger.com/atom/ns#" term="native sql" /><category scheme="http://www.blogger.com/atom/ns#" term="ejb" /><category scheme="http://www.blogger.com/atom/ns#" term="entity class" /><title>EJB: Usando consultas SQL nativas</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/Ssj3TR5CSlI/AAAAAAAABuo/8LsMX0JIm_s/s1600-h/java_logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 72px; height: 134px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/Ssj3TR5CSlI/AAAAAAAABuo/8LsMX0JIm_s/s320/java_logo.png" alt="" id="BLOGGER_PHOTO_ID_5388828864741001810" border="0" /&gt;&lt;/a&gt;Cuando hablamos de &lt;a href="http://www.google.com.sv/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fes.wikipedia.org%2Fwiki%2FEnterprise_JavaBeans&amp;amp;ei=cvjISofmHcG1lAf4yqmSAw&amp;amp;rct=j&amp;amp;q=ejb+wiki&amp;amp;usg=AFQjCNHCvnMYDHFpjol_Gie81tsMbE2Jnw"&gt;EJB (Enterprise JavaBeans)&lt;/a&gt; indudablemente tenemos que hablar sobre &lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;JPA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Siempre me ha parecido algo rigido el hecho de tener que usar consultas &lt;a href="http://www.google.com.sv/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fedocs.beasys.com%2Fkodo%2Fdocs41%2Ffull%2Fhtml%2Fejb3_langref.html&amp;amp;ei=3PjISuHcMJKnlAfU9rGSAw&amp;amp;rct=j&amp;amp;q=jpql&amp;amp;usg=AFQjCNHjVK46Nokg9lT_PFkCRUKuzJThbg"&gt;JPQL&lt;/a&gt; para generar mis Entity Class, aunque estar este tipo de consultar resulta beneficioso a la hora de cambiar de base de datos completamente ya que para la base de datos es transparente el &lt;a href="http://www.google.com.sv/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fedocs.beasys.com%2Fkodo%2Fdocs41%2Ffull%2Fhtml%2Fejb3_langref.html&amp;amp;ei=3PjISuHcMJKnlAfU9rGSAw&amp;amp;rct=j&amp;amp;q=jpql&amp;amp;usg=AFQjCNHjVK46Nokg9lT_PFkCRUKuzJThbg"&gt;JPQL&lt;/a&gt;. y aporta mucho a a la portabilidad del código con respecto a la base de datos.&lt;br /&gt;&lt;br /&gt;Pero en ocasiones necesitamos hacer uso de caracteristicas propias de la base datos para crear consultas mas complejas y nos vemos limitados por el &lt;a href="http://www.google.com.sv/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fedocs.beasys.com%2Fkodo%2Fdocs41%2Ffull%2Fhtml%2Fejb3_langref.html&amp;amp;ei=3PjISuHcMJKnlAfU9rGSAw&amp;amp;rct=j&amp;amp;q=jpql&amp;amp;usg=AFQjCNHjVK46Nokg9lT_PFkCRUKuzJThbg"&gt;JPQL&lt;/a&gt; entonces vemos la necesidad de utilizar consultas SQL nativas y a la vez son mucho más rapidas que las JPQL.&lt;br /&gt;&lt;br /&gt;¿Como se utilizan?&lt;br /&gt;&lt;br /&gt;Se podría decir que la sintaxis es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Query createNativeQuery(String sql, Class entityClass)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Donde:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Parametro uno: String sql&lt;/span&gt;&lt;br /&gt;Es la consulta SQL nativa en el cual deben de ir los campos que conformaran nuestra Entity Class.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Parametro dos: Class entityClass&lt;/span&gt;&lt;br /&gt;Es la Entity Class resultante de la consulta nativa SQL.&lt;br /&gt;&lt;br /&gt;Ahora como siempre recalco, es tipico de este blog desarrollar un pequeño ejemplito de uso.&lt;br /&gt;&lt;br /&gt;Asumiendo, ya tenemos generadas nuestra Entity Class llamada Persona procedremos a generar una lista de "personas".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;"&gt;EntityManagerFactory emf=Persistence.createEntityManagerFactory("nombreUnidadPersistencia");&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre style="font-weight: bold;"&gt;&lt;span style="font-size:78%;"&gt;&lt;a name="IDX-CHP-9-1419"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;"&gt;EntityManager em=em.createEntityManager();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;String consulta="select * from persona";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Query q=em.createNativeQuery(consulta,com.paquete.modelo.Persona.class);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Persona[] personas=(Persona[])q.getResultList().toArray(new Persona[0]);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;for(Persona p:personas)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;System.out.println(p.getPropiedad());&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;A veces no queremos tener un array de Entity Class sino que queremos obtener un valor escalar proveniente de una función sum, avg, max, etc...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;EntityManagerFactory emf=Persistence.createEntityManagerFactory("nombreUnidadPersistencia");&lt;br /&gt;&lt;/span&gt;&lt;pre style="font-weight: bold;"&gt;&lt;span style="font-size:78%;"&gt;&lt;a name="IDX-CHP-9-1419"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;EntityManager em=em.createEntityManager();&lt;br /&gt;String consulta="select sum(campo) from tabla";&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;"&gt;Query q=em.createNativeQuery(consulta);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;double total=((BigDecimal)((List)q.getSingleResult()).get(0)).doubleValue();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;De esta forma podemos trabajar con consultas SQL nativas y poder hacer uso de las capacidades de nuestra base de datos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-2208086333405194934?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/2208086333405194934/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=2208086333405194934" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2208086333405194934?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2208086333405194934?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/10/ejb-usando-consultas-sql-nativas.html" title="EJB: Usando consultas SQL nativas" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/Ssj3TR5CSlI/AAAAAAAABuo/8LsMX0JIm_s/s72-c/java_logo.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;Ak4EQnk-fCp7ImA9WxNVE0s.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-4151075530122826021</id><published>2009-10-02T21:36:00.000-07:00</published><updated>2009-10-24T00:21:43.754-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-24T00:21:43.754-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="AbstractPageBean" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="ManagedBean" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>JSF y la clase AbstractPageBean</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SsbVNU80MwI/AAAAAAAABuY/YBZbZzVoqIk/s1600-h/java_logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 72px; height: 134px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SsbVNU80MwI/AAAAAAAABuY/YBZbZzVoqIk/s320/java_logo.png" alt="" id="BLOGGER_PHOTO_ID_5388228429134181122" border="0" /&gt;&lt;/a&gt;Hace poco un compa me comentaba que al desarrollar algunos de los ejemplos que he realizado con JSF e ICEfaces no sabía que librería era necesaria para utilizar la clase AbstractPageBean, esta clase la uso para efectos de poder utilizar el método getBean(String) y obtener ya sea managed bean instanciados o el valor actual en un recorrido por una dataTable entre otros usos mas.&lt;br /&gt;&lt;br /&gt;Pues para resolver esta duda la librería que se utiliza es llamada "&lt;span style="font-weight: bold;"&gt;JSF 1.1 Design-Time Support - Deprecated&lt;/span&gt;" que esta incluida en Netbeans.&lt;br /&gt;&lt;br /&gt;Como es de fijarse como bien dice el nombre de esta libreria es de &lt;a href="http://www.srbyte.com/2009/04/deprecated-code-codigo-obsoleto.html"&gt;uso obsoleto &lt;/a&gt;es por esa razón que ultimamente no la he estado utilizando así que implemento mi propio método getBean de esta forma:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SsbYpLahP3I/AAAAAAAABug/OpgegUY4wDI/s1600-h/getbean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 90px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SsbYpLahP3I/AAAAAAAABug/OpgegUY4wDI/s320/getbean.png" alt="" id="BLOGGER_PHOTO_ID_5388232206145634162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Así puedo hacer llamadas incluso a SessionBeans y ApplicationBeans.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-4151075530122826021?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/4151075530122826021/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=4151075530122826021" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4151075530122826021?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4151075530122826021?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/10/jsf-y-el-abstractpagebean.html" title="JSF y la clase AbstractPageBean" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/SsbVNU80MwI/AAAAAAAABuY/YBZbZzVoqIk/s72-c/java_logo.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CU8BSHw9fip7ImA9WxNXEUw.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-208908197556192150</id><published>2009-09-27T21:25:00.001-07:00</published><updated>2009-09-27T21:57:39.266-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-27T21:57:39.266-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="piloto de datos" /><category scheme="http://www.blogger.com/atom/ns#" term="excel" /><category scheme="http://www.blogger.com/atom/ns#" term="tabla dinamica" /><category scheme="http://www.blogger.com/atom/ns#" term="openoffice" /><category scheme="http://www.blogger.com/atom/ns#" term="calc" /><title>Creando tablas dinámicas con OpenOffice.org Calc</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SsA6v-bwT1I/AAAAAAAABto/Iq1JdLuekjM/s1600-h/calc_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 180px; height: 135px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SsA6v-bwT1I/AAAAAAAABto/Iq1JdLuekjM/s320/calc_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5386369750222786386" border="0" /&gt;&lt;/a&gt;Muchas de las cosas que se suelen utilizar con frecuencia en Microsoft Excel son las "Tablas dinamicas" y como yo soy partidario de usar siempre en lo posible software libre me decidi a realizar un pequeño ejemplo en cual se puede realizar lo mismo pero utilizando OpenOffice.org Calc.&lt;br /&gt;&lt;br /&gt;En el caso de Calc no se llaman "Tablas dinamicas" sino "Piloto de datos".&lt;br /&gt;&lt;br /&gt;Y como es de costumbre en este blog para poder entender de lo que estoy hablando es necesario elaborar un pequeño ejemplo.&lt;br /&gt;&lt;br /&gt;Supongamos que tengo un archivo en cual esta conformado por las siguientes columnas:&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SsA-EsBRMgI/AAAAAAAABt4/qvt5h9W-bk8/s1600-h/datos.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 313px; height: 320px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SsA-EsBRMgI/AAAAAAAABt4/qvt5h9W-bk8/s320/datos.png" alt="" id="BLOGGER_PHOTO_ID_5386373404591993346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Este archivo tiene reflejadas las ventas de ciertas sucursales por fecha y nosotros queremos generar un reporte en el cual podamos ver la venta de cada sucursal por semana y con filtro de mes.&lt;br /&gt;&lt;br /&gt;Para ello seleccionamos todas las celdas que conformaran la base de datos de la tabla en nuestro caso seria desde la columna A hasta la F.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SsBAUg6Ja_I/AAAAAAAABuA/zwrniazfyYs/s1600-h/seleccion_data.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 313px; height: 320px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SsBAUg6Ja_I/AAAAAAAABuA/zwrniazfyYs/s320/seleccion_data.png" alt="" id="BLOGGER_PHOTO_ID_5386375875510496242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego debemos ir al menú Datos &gt; Piloto de datos &gt; Inicio.&lt;br /&gt;Luego aparece otra ventana que nos pregunta la fuente de datos seleccionamos la que ya viene marcada por defecto que es "Selección actual", al dar aceptar aparecera la ventana para diseñar nuestra tabla dinamica.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SsBAvnuCMZI/AAAAAAAABuI/ny5myZ1AHUs/s1600-h/conf_tabla.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SsBAvnuCMZI/AAAAAAAABuI/ny5myZ1AHUs/s320/conf_tabla.png" alt="" id="BLOGGER_PHOTO_ID_5386376341195207058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Es importante que al diseñar se elija el botón "Opciones" y establecer que la tabla dinamica se cree en una nueva hoja.&lt;br /&gt;&lt;br /&gt;Luego de esto obtenemos nuestra tabla dinamica.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SsBBSekI7LI/AAAAAAAABuQ/iknSUbjaOjI/s1600-h/tabla_dinamica.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 216px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SsBBSekI7LI/AAAAAAAABuQ/iknSUbjaOjI/s320/tabla_dinamica.png" alt="" id="BLOGGER_PHOTO_ID_5386376940033207474" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-208908197556192150?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/208908197556192150/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=208908197556192150" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/208908197556192150?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/208908197556192150?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/09/creando-tablas-dinamicas-con.html" title="Creando tablas dinámicas con OpenOffice.org Calc" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/SsA6v-bwT1I/AAAAAAAABto/Iq1JdLuekjM/s72-c/calc_logo.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></entry><entry gd:etag="W/&quot;CU4MRH85fip7ImA9WxNXEUw.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-5414319705620849442</id><published>2009-09-27T14:06:00.000-07:00</published><updated>2009-09-27T21:59:45.126-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-27T21:59:45.126-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="jsp" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="navigation rule" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>JSF: Creando reglas de navegación con Netbeans</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/Sr_UVM_wQLI/AAAAAAAABso/x1NI0n7BIBo/s1600-h/java-logo-small.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 125px; height: 166px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/Sr_UVM_wQLI/AAAAAAAABso/x1NI0n7BIBo/s320/java-logo-small.png" alt="" id="BLOGGER_PHOTO_ID_5386257140089372850" border="0" /&gt;&lt;/a&gt;Si bien muchos han leido la &lt;a href="http://wiki.netbeans.org/NavegandoPaginasVisualJSF"&gt;documentación de la misma página de Netbeans para las reglas de navegación&lt;/a&gt;, la explicación no da explicación para reusar la regla de navegación para varias páginas.&lt;br /&gt;&lt;br /&gt;Es decir que solamente puedo utilizar la regla de navegación a través de una tan sola página, pero si de repente tenemos el mismo link en varias páginas no nos servira.&lt;br /&gt;&lt;br /&gt;¿Como solucionamos este problema?&lt;br /&gt;&lt;br /&gt;Es de una forma muy sencilla, para entenderlo crearemos una regla de navegación con tres simples jsp.&lt;br /&gt;&lt;br /&gt;Luego de crear el proyecto y crear los tres jsp, debemos ir al archivo faces-config.xml y dar clic en el botón "XML".&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/Sr_jMncZ8mI/AAAAAAAABsw/-rrCVHvoLGk/s1600-h/faces-config-diagrama.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 137px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/Sr_jMncZ8mI/AAAAAAAABsw/-rrCVHvoLGk/s320/faces-config-diagrama.png" alt="" id="BLOGGER_PHOTO_ID_5386273485244461666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego no aparece era el código xml del archivo, ahora debemos dar clic derecho sobre cualquier parte del documento y escoger la opción &lt;span style="font-weight: bold;"&gt;JavaServer Faces &gt; Add Navigation Case...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/Sr_pdDyveNI/AAAAAAAABtY/No6mnrdK1E0/s1600-h/navigation_case.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/Sr_pdDyveNI/AAAAAAAABtY/No6mnrdK1E0/s320/navigation_case.png" alt="" id="BLOGGER_PHOTO_ID_5386280364802013394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Luego de esto en el campo "From view" debemos escribir  un asterisco esto indica para poder utilizar la regla de navegación desde cualquier link en cualquier página, no escribiremos nada en el campo "From Action" así que en el siguiente campo llamado "From Outcome" debemos escribir la cadena que devolvera el método en el backing bean para acceder al link y por ultimo en el campo "To View" buscamos la página jsp, jspx o xhtml que deseemos acceder a través del link y procedemos a hacer clic en el botón "Add".&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/Sr_kr0grudI/AAAAAAAABs4/p_e3zGx2SlY/s1600-h/navigation_case_ejemplo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/Sr_kr0grudI/AAAAAAAABs4/p_e3zGx2SlY/s320/navigation_case_ejemplo.png" alt="" id="BLOGGER_PHOTO_ID_5386275120839637458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ahora para crear una nueva regla realizamos los pasos mencionados anteriormente nada mas con la variante que el campo "From Outcome" y "To View" cambiaran, en el ejemplo que estamos desarrollando para el siguiente link lo llenamos así:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt; &lt;span style="font-weight: bold;"&gt;From Outcome: pagina_2&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;To View: pagina2.jspx&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y lo hacemos nuevamente con la tercera regla.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;From Outcome: pagina_3&lt;br /&gt;To View: pagina3.jspx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y nuestro archivo debera quedar de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/Sr_mDEgn-OI/AAAAAAAABtA/sQfWa5zR-lI/s1600-h/xml_faces_config.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 197px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/Sr_mDEgn-OI/AAAAAAAABtA/sQfWa5zR-lI/s320/xml_faces_config.png" alt="" id="BLOGGER_PHOTO_ID_5386276619782977762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Con este nueva estructura nuestro diagrama ser verá así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/Sr_qZKd2obI/AAAAAAAABtg/VmcpIfaw56c/s1600-h/nuevo_diagrama.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 210px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/Sr_qZKd2obI/AAAAAAAABtg/VmcpIfaw56c/s320/nuevo_diagrama.png" alt="" id="BLOGGER_PHOTO_ID_5386281397385601458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego procedemos a crear nuestro Managed Bean de scope Request para implementar las reglas que hemos creado, yo le he llamado "LinksBean"&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/Sr_nWRSEQdI/AAAAAAAABtI/FW5joegJetw/s1600-h/LinksBean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 308px; height: 320px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/Sr_nWRSEQdI/AAAAAAAABtI/FW5joegJetw/s320/LinksBean.png" alt="" id="BLOGGER_PHOTO_ID_5386278049140720082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego nada mas debemos enlazar el backing bean a los commandLink de la página jsp.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/Sr_oQb_IGfI/AAAAAAAABtQ/ymmRzVbx9bw/s1600-h/pagina1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 226px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/Sr_oQb_IGfI/AAAAAAAABtQ/ymmRzVbx9bw/s320/pagina1.png" alt="" id="BLOGGER_PHOTO_ID_5386279048446482930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego de esto nada mas debemos ejecutar la aplicación, &lt;a href="http://www.mediafire.com/file/gmmyzzdhzz2/WebNavegacion.tar.gz"&gt;adjunto el proyecto&lt;/a&gt; para efectos de estudio. Si usas Windows recuerda tener instalado &lt;a href="http://www.google.com.sv/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.winrar.es%2F&amp;amp;ei=OOm_SqqfLMSa8Abx18ygAQ&amp;amp;rct=j&amp;amp;q=winrar&amp;amp;usg=AFQjCNFGXrJ5Wow50F4-NrngrLM23LTXvg"&gt;winrar&lt;/a&gt; para poder descomprimir el proyecto.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-5414319705620849442?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/5414319705620849442/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=5414319705620849442" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5414319705620849442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5414319705620849442?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/09/jsf-creando-reglas-de-navegacion-con.html" title="JSF: Creando reglas de navegación con Netbeans" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/Sr_UVM_wQLI/AAAAAAAABso/x1NI0n7BIBo/s72-c/java-logo-small.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D0UBRX84eyp7ImA9WxNXEEU.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-2614728895344229548</id><published>2009-09-27T13:49:00.001-07:00</published><updated>2009-09-27T14:00:54.133-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-27T14:00:54.133-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="redireccionar" /><category scheme="http://www.blogger.com/atom/ns#" term="contexto" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="faces-config.xml" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>JSF: Redireccionando a páginas de terceros a través de un BackingBean</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/Sr_QiXmBAdI/AAAAAAAABsg/74DV7YORIAk/s1600-h/j2ee_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 100px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/Sr_QiXmBAdI/AAAAAAAABsg/74DV7YORIAk/s320/j2ee_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5386252968225997266" border="0" /&gt;&lt;/a&gt;Si bien existe la posibilidad para manejar los enlaces de nuestro proyecto Web con &lt;a href="http://krypto84sv.blogspot.com/search/label/jsf"&gt;JSF&lt;/a&gt; a través del archivo de configuración faces-config.xml, a veces nos vemos en la necesidad de tener enlaces en las  páginas de nuestro proyecto que redireccionan a sitios de terceros a través de una validación en el Backing Bean.&lt;br /&gt;&lt;br /&gt;La manera de hacerlo es de la siguiente forma:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;String url=&lt;span style="color: rgb(255, 153, 0);"&gt;"http://krypto84sv.blogspot.com"&lt;/span&gt;;&lt;br /&gt;FacesContext fc=FacesContext.getCurrentInstance();&lt;br /&gt;fc.getExternalContext().redirect(url);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Notese que la cadena "url" va la url completa de la dirección donde queremos redireccionar, este método se puede también utilizar para ir a una página en especifico de nuestro proyecto, pero es mucho mas eficiente utilizar las reglas de navegación propias del faces-config.xml para moverse dentro de nuestro mismo proyecto.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-2614728895344229548?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/2614728895344229548/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=2614728895344229548" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2614728895344229548?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2614728895344229548?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/09/jsf-redireccionando-paginas-de-terceros.html" title="JSF: Redireccionando a páginas de terceros a través de un BackingBean" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/Sr_QiXmBAdI/AAAAAAAABsg/74DV7YORIAk/s72-c/j2ee_logo.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0cBRHY6fSp7ImA9WxJaGUw.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-5268562820400022758</id><published>2009-08-06T19:09:00.001-07:00</published><updated>2009-08-10T08:44:15.815-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-10T08:44:15.815-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="facelets" /><category scheme="http://www.blogger.com/atom/ns#" term="crosstab" /><category scheme="http://www.blogger.com/atom/ns#" term="ValueChangeListener" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="derby" /><title>ICEfaces: Editando registros en Crosstab</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg" alt="" border="0" /&gt;&lt;/a&gt;Al leer un comentario en la entradade como crear &lt;a href="http://krypto84sv.blogspot.com/2009/06/crosstab-con-icefaces.html"&gt;Crosstab con ICEfaces&lt;/a&gt;, me hacian la consulta de como poder relacionar un id de un registro con un valor puesto en un inputtext dentro de la tabla, así que me decidi desarrollar un ejemplo como es de costumbre en este blog para poder resolver el problema.&lt;br /&gt;&lt;br /&gt;El ejemplo que expondre no varia mucho del que esta hecho en la entrada de &lt;a href="http://krypto84sv.blogspot.com/2009/06/crosstab-con-icefaces.html"&gt;Crosstab con ICEfaces&lt;/a&gt;, pues la estructura de la base de datos es la misma.&lt;br /&gt;&lt;br /&gt;También en la clase "Dao" se debe agregar dos métodos los cuales son:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;ActualizarPrecio&lt;/li&gt;&lt;li&gt;NuevoPrecio&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SnuOkoLveWI/AAAAAAAABsA/MgOImtkvItQ/s1600-h/NuevosMetodos.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 215px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SnuOkoLveWI/AAAAAAAABsA/MgOImtkvItQ/s320/NuevosMetodos.png" alt="" id="BLOGGER_PHOTO_ID_5367040140855179618" border="0" /&gt;&lt;/a&gt;Despues el Managed Bean Pagina queda así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SnuR33WrGJI/AAAAAAAABsI/sagK0levaYM/s1600-h/PaginaManaged.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 308px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SnuR33WrGJI/AAAAAAAABsI/sagK0levaYM/s320/PaginaManaged.png" alt="" id="BLOGGER_PHOTO_ID_5367043769879959698" border="0" /&gt;&lt;/a&gt;Y la estructa de la tabla en xhtml es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SnuSHcHpFFI/AAAAAAAABsQ/PShIidfCyZ8/s1600-h/xmlTabla.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 207px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SnuSHcHpFFI/AAAAAAAABsQ/PShIidfCyZ8/s320/xmlTabla.png" alt="" id="BLOGGER_PHOTO_ID_5367044037447062610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Al ejecutar la aplicación a través de la ruta http://localhost:8084/EjemploTabla que se verá así:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SnuSWkniieI/AAAAAAAABsY/rCuLLIUTuzM/s1600-h/EjemploTabla.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 254px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SnuSWkniieI/AAAAAAAABsY/rCuLLIUTuzM/s320/EjemploTabla.png" alt="" id="BLOGGER_PHOTO_ID_5367044297426373090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;¿Como es el funcionamiento de la aplicación?&lt;br /&gt;&lt;br /&gt;Pues por cada InputText &lt;ice:inputtext&gt; se ejecuta &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;ice:inputtext&gt;&lt;/ice:inputtext&gt;&lt;/span&gt; su respectivo evento ValueChangeListener ejecuta el evento ActualizarPrecio del managed bean Pagina al cambiar el valor de cada caja de texto y el método evalua si el precio existe lo actualizar de lo contrario lo crea.&lt;br /&gt;&lt;/ice:inputtext&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/?sharekey=5455cd43eb345dd0d5a101cf914073b49730a35054fe6752"&gt;Comparto el proyecto&lt;/a&gt; para efectos de estudio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-5268562820400022758?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/5268562820400022758/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=5268562820400022758" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5268562820400022758?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5268562820400022758?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/08/icefaces-editando-registros-en-crosstab.html" title="ICEfaces: Editando registros en Crosstab" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></entry><entry gd:etag="W/&quot;C0MHQXo5fSp7ImA9WxJbFUo.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-5976286177877436740</id><published>2009-07-25T18:07:00.000-07:00</published><updated>2009-07-25T18:23:50.425-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-25T18:23:50.425-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blog" /><title>Cambio de imagen en Anécdotas de las curvas del seno</title><content type="html">&lt;div style="text-align: justify;"&gt;Como es de notar ahora mi blog ha cambiado y mucho, pues ya tenia mucho de no darme a la tarea de embellecerlo un poco y es que tambien han habiado muchos cambios en mi vida, pues tambien tengo nueva computadora es una &lt;a href="http://h10010.www1.hp.com/wwpc/co/es/ho/WF06b/321957-321957-3329744-64354-64354-3873767-3958585.html"&gt;HP Pavilio dv2-1010la&lt;/a&gt; que ya tiene instalado el todo poderoso Debian y todos sus dispositivos funcionando a la perfección.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://h10010.www1.hp.com/wwpc/images/emea/NU834LA_190x170.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 170px; height: 190px;" src="http://h10010.www1.hp.com/wwpc/images/emea/NU834LA_190x170.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;Mi nueva adquisición&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora espero tener un poco mas de actividad bloguera y contrubuir con mis post sobre &lt;a href="http://krypto84sv.blogspot.com/search/label/java"&gt;Java&lt;/a&gt; a todos los amigos de la UES.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-5976286177877436740?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/5976286177877436740/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=5976286177877436740" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5976286177877436740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5976286177877436740?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/07/cambio-de-imagen-en-anecdotas-de-las.html" title="Cambio de imagen en Anécdotas de las curvas del seno" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;A0YBQXg6eip7ImA9WxJbFUs.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-1734929373026324459</id><published>2009-07-20T14:48:00.000-07:00</published><updated>2009-07-25T17:45:50.612-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-25T17:45:50.612-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bridge" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="foxpro" /><category scheme="http://www.blogger.com/atom/ns#" term="facelets" /><category scheme="http://www.blogger.com/atom/ns#" term="odbc" /><category scheme="http://www.blogger.com/atom/ns#" term="unixodbc" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><category scheme="http://www.blogger.com/atom/ns#" term="jdbc" /><title>JSF: Conectando tablas de FoxPro con Java y ICEfaces</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg" alt="" border="0" /&gt;&lt;/a&gt;En el trabajo ultimamente he estado arto de tener que estar creando aplicaciones en la cual se tiene que alimentar por medio de un archivo de Excel en las interfaces web y esto se debe que casi todo esta elaborado con tablas de fox, entonces me decidi a averiguar si hay alguna manera de pegarme a dichas tablas y a la vez tener los beneficios de &lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;JPA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Googleando un poco me di cuenta que no existe un driver JDBC especifico para tablas de Fox Pro, entonces la solución es conectarse a través de &lt;a href="http://es.wikipedia.org/wiki/Open_Database_Connectivity"&gt;ODBC&lt;/a&gt;, pues mucho me van a decir que utilizar ODBC es lento pero por el momento no he encontrado otra manera, y lo otro es que me amarra utilizar windows del lado del servidor de aplicaciones, intente usar &lt;a href="http://www.unixodbc.org/"&gt;unixODBC&lt;/a&gt; pero no existe driver para tablas Dbase así que por el momento estoy amarrado a windows utilizando esta conectividad.&lt;br /&gt;&lt;br /&gt;Pues bien ahora voy a la parte que mas me gusta y es la de desarrollar un ejemplo, en el cual creare un proyecto Java Library Class con &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; en cual puede ser utilizado tanto en un proyecto web como en una aplicación de escritorio con Swing o alguna interfaz en Java que este en en escucha, o como putas les pegue la regalada gana usarlo siempre con Java.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Antes de empezar es necesario tener instalado el Driver de Microsoft Visual FoxPro que esta disponible en la siguiente dirección:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/vfoxpro/bb190233.aspx"&gt;http://msdn.microsoft.com/en-us/vfoxpro/bb190233.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Crear el origen de datos de las tablas, para este ejemplo yo creo que un archivo de base de datos de Fox con una tabla llamada "Persona", tambien funciona perfectamente con tablas libres.&lt;br /&gt;&lt;br /&gt;Nos dirigimos a Panel de Control / Herramientas administrativas / Orígenes de datos (ODBC) estando alli en la ficha DSN de usuario damos clic en "Agregar" y nos aparecera el listado de Drivers a utilizar en nuestro caso seleccionaremos "Driver para o Microsoft Visual FoxPro" o cualquier otro similar que se llame Visual FoxPro que al fin y al cabo son iguales.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SmTrI06tG4I/AAAAAAAABoA/ZLPjM-0z73Y/s1600-h/SeleccionDriver.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 236px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SmTrI06tG4I/AAAAAAAABoA/ZLPjM-0z73Y/s320/SeleccionDriver.PNG" alt="" id="BLOGGER_PHOTO_ID_5360667993354083202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Luego de esto debemos elegir la ruta nuestro archivo de base de datos o la ruta del directorio donde tengamos nuestras tablas libres y asignamos nombre a nuestro Origen de datos en mi caso le llame "FoxPro"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SmTrdDcg91I/AAAAAAAABoI/eeEszuImxio/s1600-h/RegistroOrigenDato.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 150px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SmTrdDcg91I/AAAAAAAABoI/eeEszuImxio/s320/RegistroOrigenDato.PNG" alt="" id="BLOGGER_PHOTO_ID_5360668340851373906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Damos clic en "Ok" y tendremos listo nuestro origen de datos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dentro de &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; 6.7 es necesario crear una conexión de base de datos de tipo "JDBC-ODBC Bridge" en username y password se coloca un usuario y contraseña de windows y la cadena de URL JDBC se coloca el nombre del Origen de datos que en nuestro caso es "FoxPro".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SmTtymRNWLI/AAAAAAAABoQ/PkltJewUDn4/s1600-h/ConexionNetbeans.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 215px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SmTtymRNWLI/AAAAAAAABoQ/PkltJewUDn4/s320/ConexionNetbeans.PNG" alt="" id="BLOGGER_PHOTO_ID_5360670909999700146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Procedemos a crear un proyecto Java Class Library, que le nombrare "JavaFox", que contendra nuestro Entity Class de la tabla Persona. Para este caso en particular creare la unidad de persistencia a parte y la clase Entidad ya que el asistente de Netbeans no puede crearlo por nosotros ya que fox no sabe sobre esquemas y asi no funciona bien el asistente.&lt;br /&gt;&lt;br /&gt;Cree mi paquete llamado "org.dani.ejemplo.fox" doy clic derecho sobre este me voy a "Nuevo" selecciono la categoría "Persistence" y selecciono "Unidad de persistencia", en la ventana de dialogo del asistente podemos como libreria de persistencia Hibernate o Toplink en mi caso siempre me gusta usar mas TopLink asi que elijo esta, también elijo la conexión de base de datos que creamos anteriormente y en la opción de Table Generation Strategy marcamos "none" y por ultimo damos clic en Finish.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SmTu9qbtALI/AAAAAAAABoY/IdyQ7-Ao3lU/s1600-h/UnidadPersistencia.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 186px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SmTu9qbtALI/AAAAAAAABoY/IdyQ7-Ao3lU/s320/UnidadPersistencia.PNG" alt="" id="BLOGGER_PHOTO_ID_5360672199607648434" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Paso 4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ahora procedemos a crear nuestra Entity Class de la tabla Persona, damos clic derecho sobre el paquete que habíamos creado seleccionamos de nuevo la categoría "Persistencia" pero ahora escogemos "Entity Class" y completamos la clase de esta manera:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SmT_4YFfdDI/AAAAAAAABog/n9PyhrbBzrg/s1600-h/ClasePersona.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 310px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SmT_4YFfdDI/AAAAAAAABog/n9PyhrbBzrg/s320/ClasePersona.PNG" alt="" id="BLOGGER_PHOTO_ID_5360690800480973874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Creamos un &lt;a href="http://krypto84sv.blogspot.com/2009/06/uso-de-facelets-y-icefaces-en-netbeans.html"&gt;proyecto web Con ICEfaces y Facelets&lt;/a&gt;, yo lo llamare "WebFox", tambien debemos importar el proyecto anterior a este, ya sin perder ya tanto el tiempo nos diponemos a crear nuestro Managed Bean llamado "TemplateClient", el cual tendra la funcionalidad de listar, modificar y guardar registros de la tabla de FoxPro.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SmUBArghuFI/AAAAAAAABow/vt9OH8ecwGk/s1600-h/TemplateClient.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 258px; height: 320px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SmUBArghuFI/AAAAAAAABow/vt9OH8ecwGk/s320/TemplateClient.PNG" alt="" id="BLOGGER_PHOTO_ID_5360692042645223506" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Paso 6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora solo debemos editar la parte de la vista que es el templateclient.xhtml&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SmUCU677SDI/AAAAAAAABpQ/AnSpGsK9t8s/s1600-h/template-client.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 286px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SmUCU677SDI/AAAAAAAABpQ/AnSpGsK9t8s/s320/template-client.PNG" alt="" id="BLOGGER_PHOTO_ID_5360693489895688242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ya hecho todo lo anterior nada mas bastara con ejecutar nuestra aplicación&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SmUCepMI_tI/AAAAAAAABpY/T7llT7RPUp4/s1600-h/firefoxApp.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 242px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SmUCepMI_tI/AAAAAAAABpY/T7llT7RPUp4/s320/firefoxApp.PNG" alt="" id="BLOGGER_PHOTO_ID_5360693656930549458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Comparto &lt;a href="http://www.mediafire.com/?sharekey=5455cd43eb345dd0d5a101cf914073b49730a35054fe6752"&gt;el proyecto&lt;/a&gt; para efectos del estudio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-1734929373026324459?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/1734929373026324459/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=1734929373026324459" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/1734929373026324459?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/1734929373026324459?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/07/jsf-conectando-tablas-de-foxpro-con.html" title="JSF: Conectando tablas de FoxPro con Java y ICEfaces" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DkUFQHw9cSp7ImA9WxJUFUQ.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-9210917113471425648</id><published>2009-07-14T08:03:00.000-07:00</published><updated>2009-07-14T10:56:51.269-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-14T10:56:51.269-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="persistencia" /><category scheme="http://www.blogger.com/atom/ns#" term="jpa" /><category scheme="http://www.blogger.com/atom/ns#" term="facelets" /><category scheme="http://www.blogger.com/atom/ns#" term="SelectOneMenu" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><category scheme="http://www.blogger.com/atom/ns#" term="derby" /><title>ICEfaces: Incluir dropdown List (combos) en tablas</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg" alt="" border="0" /&gt;&lt;/a&gt;El día de ayer el compañero &lt;a href="http://www.blogger.com/profile/09732801508756249569"&gt;Hugo&lt;/a&gt; me manifestaba su inquietud de como incluir un combo (SelectOneMenu) dentro de una tabla con &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; a su vez que este combo tuviera seleccionado el elemento correspondiente a cada registro de tabla para posteriormente poder modificarlo.&lt;br /&gt;&lt;br /&gt;Pues bien me parecio buena idea desarrollar la solución al problema planteado anteriormente, pues para el ejemplo que expondre a continuación se utilizaran las siguiente herramientas:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;IDE Netbeans&lt;/a&gt; 6.7&lt;/li&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/search/label/facelets"&gt;Facelets&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/search/label/derby"&gt;Apache Derby&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;Java Persistence API&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Antes de iniciar cabe aclara que siempre es fundamental utilizar &lt;a href="http://krypto84sv.blogspot.com/2009/07/icefaces-custom-converter.html"&gt;Convertidores personalizados&lt;/a&gt; a la hora de utilizar SelectOneMenu y &lt;a href="http://es.wikipedia.org/wiki/JavaBean"&gt;JavaBeans&lt;/a&gt; pues resuelven la vida muchisimo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso Uno&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;Crear un proyecto de Persistencia de datos&lt;/a&gt; para la base de datos Sample en Derby que viene con Netbeans, pero lo principal es a clase "Dao" que es donde obtengo todos mis Entity Class:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SlyiLZB1y5I/AAAAAAAABnQ/dUc3QsD0cTQ/s1600-h/ClaseDao.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 315px; height: 320px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SlyiLZB1y5I/AAAAAAAABnQ/dUc3QsD0cTQ/s320/ClaseDao.bmp" alt="" id="BLOGGER_PHOTO_ID_5358335973244914578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso Dos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Crear nuestro &lt;a href="http://krypto84sv.blogspot.com/2009/06/uso-de-facelets-y-icefaces-en-netbeans.html"&gt;proyecto Web utilizando los frameworks ICEfaces y Facelets&lt;/a&gt;, y crear nuestro Convertirdor para el objeto Manufacturer y posteriormente registrarlo en faces-config.xml&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SlykjeQEYeI/AAAAAAAABnY/Giw34N-pz6w/s1600-h/Convertirdor.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SlykjeQEYeI/AAAAAAAABnY/Giw34N-pz6w/s320/Convertirdor.PNG" alt="" id="BLOGGER_PHOTO_ID_5358338585986884066" border="0" /&gt;&lt;/a&gt;Registro del convertidor en faces-config.xml&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/Slyk4HcMleI/AAAAAAAABng/jmbqa3KuREk/s1600-h/faces-config.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 89px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/Slyk4HcMleI/AAAAAAAABng/jmbqa3KuREk/s320/faces-config.PNG" alt="" id="BLOGGER_PHOTO_ID_5358338940640990690" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Paso Tres&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora creamos nuestro Managed Bean que le llamaremos TemplateClient al igual que la página template-client.xhtml, nada mas para efectos de saber que corresponde a ese xhtml y será de tipo request.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SlylzE5z9_I/AAAAAAAABno/pEXLYFEzAdM/s1600-h/TemplateClient.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 238px; height: 320px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SlylzE5z9_I/AAAAAAAABno/pEXLYFEzAdM/s320/TemplateClient.PNG" alt="" id="BLOGGER_PHOTO_ID_5358339953572182002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso Cuatro&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nada mas debemos diseñar nuestro página xhtml que es la template-client.xhtml&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SlynYSGWFeI/AAAAAAAABnw/CZI3FYBLx_c/s1600-h/template-client.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 310px; height: 320px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SlynYSGWFeI/AAAAAAAABnw/CZI3FYBLx_c/s320/template-client.PNG" alt="" id="BLOGGER_PHOTO_ID_5358341692281198050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahora solo debemos ejecutar la aplicación que se verá de la siguiente manera&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SlyoEOqOEyI/AAAAAAAABn4/BZj6U0l5sRk/s1600-h/RunEjemplo.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 318px; height: 320px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SlyoEOqOEyI/AAAAAAAABn4/BZj6U0l5sRk/s320/RunEjemplo.PNG" alt="" id="BLOGGER_PHOTO_ID_5358342447272170274" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.mediafire.com/?sharekey=5455cd43eb345dd0d5a101cf914073b49730a35054fe6752"&gt;Adjunto el proyecto&lt;/a&gt; para efectos de estudio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-9210917113471425648?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/9210917113471425648/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=9210917113471425648" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/9210917113471425648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/9210917113471425648?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/07/icefaces-incluir-dropdown-list-combos.html" title="ICEfaces: Incluir dropdown List (combos) en tablas" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D0UNRn04fyp7ImA9WxJUEkk.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-8051133555081441757</id><published>2009-07-10T09:08:00.001-07:00</published><updated>2009-07-10T10:01:37.337-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-10T10:01:37.337-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="custom" /><category scheme="http://www.blogger.com/atom/ns#" term="converter" /><category scheme="http://www.blogger.com/atom/ns#" term="SelectOneMenu" /><category scheme="http://www.blogger.com/atom/ns#" term="framework" /><category scheme="http://www.blogger.com/atom/ns#" term="ajax" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="navegador web" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>ICEfaces: Custom Converter</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5356864225121295602" border="0" /&gt;&lt;/a&gt;Ya hace un buen rato &lt;a href="http://services.nexodyne.com/email/icon/gcOdCPEkVXm6mqo156SAuQ%3D%3D/pjHtuGY%3D/R01haWw%3D/0/image.png"&gt;Hugol&lt;/a&gt; me preguntaba de como poder obtener un objeto seleccionado a través de un componente SelectOneMenu con &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt;, ya que siempre le tocaba obtener el valor del id y despues volver a reconstruir el objeto y esa tarea es super tediosa, entonces alli surge la necesidad de utilizar "Converter", ¿que es esto? el mecanismo es el de conversión      y está definido por el interfaz  javax.faces.convert.Converter      y sus múltiples implementaciones. Las      conversiones aseguran que el tipo de un dato introducido en un formulario      JSF sea el correcto.&lt;br /&gt;&lt;br /&gt;Como es de costumbre en este blog desarrollare un pequeño ejemplo de como crear un Custom Converter, para un conjunto de objetos de tipo Product &lt;a href="http://krypto84sv.blogspot.com/2008/11/introduciendo-al-uso-de-persistencia-de.html"&gt;generado a través de JPA con Netbeans   6.7 y Apache Derby&lt;/a&gt; en un SelectOneMenu (dropdown List).&lt;br /&gt;&lt;br /&gt;Lo primero es crear una clase que implemente la interfaz javax.faces.convert.Converter y desarrollar los métodos getAsString y getAsObject. El primero convierte el valor de la cadena del item seleccionado al objeto que queremos obtener, el según convierte el objeto ya convertido en cadena para colocarlo en el value de la etiqueta Option que genera &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Mi clase ConvertidorProducto quedó así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/Sldqy8D7AEI/AAAAAAAABmo/AoqLzLB0CPg/s1600-h/ConvertidorProducto.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/Sldqy8D7AEI/AAAAAAAABmo/AoqLzLB0CPg/s320/ConvertidorProducto.PNG" alt="" id="BLOGGER_PHOTO_ID_5356867705129074754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Creamos nuestro managed bean de tipo request en mi caso lo llame TemplateClient al igual que el xhtml de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SldrbX7CiII/AAAAAAAABmw/1X16PT2V15g/s1600-h/TemplateClientClass.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 309px; height: 320px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SldrbX7CiII/AAAAAAAABmw/1X16PT2V15g/s320/TemplateClientClass.PNG" alt="" id="BLOGGER_PHOTO_ID_5356868399802779778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Luego se debe registrar nuestro convertidor en faces-config.xml de nuestro proyecto quedando así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/Sldrg2UIoUI/AAAAAAAABm4/W6jaxpzemgY/s1600-h/faces-config.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 174px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/Sldrg2UIoUI/AAAAAAAABm4/W6jaxpzemgY/s320/faces-config.PNG" alt="" id="BLOGGER_PHOTO_ID_5356868493860446530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Luego desarrollamos el archivo, en mi caso, template-client.xhtml de la siguiente manera&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SldsT-V2YXI/AAAAAAAABnA/SlSy7rcphaI/s1600-h/TemplateClientXhtml.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 271px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SldsT-V2YXI/AAAAAAAABnA/SlSy7rcphaI/s320/TemplateClientXhtml.PNG" alt="" id="BLOGGER_PHOTO_ID_5356869372188451186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Y por ultimo deployamos el proyecto que se verá así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SldsY3NR5PI/AAAAAAAABnI/42WkxeNCc1A/s1600-h/firefox.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 92px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SldsY3NR5PI/AAAAAAAABnI/42WkxeNCc1A/s320/firefox.PNG" alt="" id="BLOGGER_PHOTO_ID_5356869456172803314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/file/4yfmx4knnzb/EjemploConverter.rar"&gt;Adjunto el proyecto&lt;/a&gt; para que pueda ser estudiado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-8051133555081441757?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/8051133555081441757/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=8051133555081441757" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8051133555081441757?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8051133555081441757?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/07/icefaces-custom-converter.html" title="ICEfaces: Custom Converter" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SldnoYBaXPI/AAAAAAAABmg/S438fH5Mjl4/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;DUEARHwyfip7ImA9WxJXGUQ.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-6042715418121250740</id><published>2009-06-13T13:35:00.000-07:00</published><updated>2009-06-14T09:40:45.296-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-14T09:40:45.296-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="jpa" /><category scheme="http://www.blogger.com/atom/ns#" term="facelets" /><category scheme="http://www.blogger.com/atom/ns#" term="crosstab" /><category scheme="http://www.blogger.com/atom/ns#" term="columnas" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="tablas" /><category scheme="http://www.blogger.com/atom/ns#" term="navegador web" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>Crosstab con ICEfaces</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SjRVww1Uq3I/AAAAAAAABl4/kHal25WjDwQ/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SjRVww1Uq3I/AAAAAAAABl4/kHal25WjDwQ/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5346992953826257778" border="0" /&gt;&lt;/a&gt;Una de las cosas que se hace bastante uso en las aplicaciones de gestión es la elaboración de tablas para presentar datos, y entre muchos casos que se me han presentado a veces es necesario generar tablas en la cual tanto las filas como las columnas van creciendo a esta situación se le denomina Crosstab en inglés.&lt;br /&gt;&lt;br /&gt;Últimamente en mi trabajo los recientes proyectos los he estado realizando mediante &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; que me ha reducido considerablemente el tiempo desarrollo gracias a su implementación de Ajax y por el lado de los usuarios que obtienen aplicaciones mucho mas parecidas como si fueran de escritorio como están acostumbrados.&lt;br /&gt;&lt;br /&gt;Antes que comenzar a desarrollar el proyecto necesitamos tener una base de datos, para este caso utilizare derby que ya esta embebido con &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt;, así no tengo que obligar a mi lectores instalar ya sea &lt;a href="http://krypto84sv.blogspot.com/search/label/mysql"&gt;MySQL&lt;/a&gt;, &lt;a href="http://krypto84sv.blogspot.com/search/label/postgresql"&gt;PostgreSQL&lt;/a&gt; u &lt;a href="http://krypto84sv.blogspot.com/search/label/oracle"&gt;Oracle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Mi base de datos le llame crosstab y la estructura de las tablas es la siguiente:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;create table producto (&lt;br /&gt;id int not null primary key generated always as identity,&lt;br /&gt;descripcion varchar(20) not null&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;create table periodo (&lt;br /&gt;id int not null primary key generated always as identity,&lt;br /&gt;inicio date not null,&lt;br /&gt;fin date not null&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;create table precio (&lt;br /&gt;id int not null primary key generated always as identity,&lt;br /&gt;valor double not null,&lt;br /&gt;fk_producto int not null,&lt;br /&gt;fk_periodo int not null,&lt;br /&gt;constraint precio_producto foreign key(fk_producto) references producto(id),&lt;br /&gt;constraint precio_periodo foreign key(fk_periodo) references periodo(id)&lt;br /&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Nota: Es necesario agregarle registros, la aplicación que se desarrollara no tendrá ninguna validación en cuanto si en la tabla se encuentran datos nulos en la tabla Precio. Adjuntare el código fuente del proyecto con el respectivo script SQL de la estructura de la base de datos que puede ser descargado al final de este post.&lt;br /&gt;&lt;br /&gt;Pues bien ahora es el momento de echarle mano al desarrollo de la aplicación, en mi caso me gusta crear mis Entity Class como un proyecto de librería de Java para tener separada la lógica del negocio con la interfaz web mi proyecto se llamara JavaCrosstab.&lt;br /&gt;&lt;br /&gt;La forma para generar Entity Class con &lt;a href="http://krypto84sv.blogspot.com/search/label/jpa"&gt;JPA&lt;/a&gt; ya fue tratado a anteriormente, así que en el proyecto se agregara nada mas una Clase llamada &lt;span style="font-weight: bold;"&gt;Control&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SjRYXYYpz9I/AAAAAAAABmA/8jpLV3owtew/s1600-h/ClaseControl.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 300px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SjRYXYYpz9I/AAAAAAAABmA/8jpLV3owtew/s320/ClaseControl.png" alt="" id="BLOGGER_PHOTO_ID_5346995816301711314" border="0" /&gt;&lt;/a&gt;Nota: Hay que recordar que habrá que &lt;a href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html"&gt;agregar posteriormente las librerías &lt;/a&gt;&lt;a href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html"&gt;TopLink&lt;/a&gt;&lt;a href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html"&gt; y derbyClient al &lt;/a&gt;&lt;a href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html"&gt;Tomcat&lt;/a&gt;, por que el proyecto web lo hare con este servidor.&lt;br /&gt;&lt;br /&gt;Ahora el ejemplo que desarrollare estará hecho con &lt;a href="http://krypto84sv.blogspot.com/search/label/facelets"&gt;Facelets&lt;/a&gt;, no entrare en detalles como crear un proyecto &lt;a href="http://krypto84sv.blogspot.com/search/label/facelets"&gt;Facelets&lt;/a&gt; ya que esto &lt;a href="http://krypto84sv.blogspot.com/2009/06/uso-de-facelets-y-icefaces-en-netbeans.html"&gt;ya lo he hecho&lt;/a&gt;, pues nada mas me centrare en la forma de crear la tabla mediante &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; y &lt;a href="http://krypto84sv.blogspot.com/search/label/jpa"&gt;JPA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pues procedemos a crear un proyecto Web con &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; con los frameworks ICEfaces y Facelets llamado WebCrosstab, deberemos agregar el proyecto donde se encuentra nuestros Entity Class creado anteriormente llamado JavaCrosstab luego crear un Managed Bean llamado ConversorDolares, a este Bean deberá tener la siguiente estructura:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SjRcCxy-UwI/AAAAAAAABmQ/-yqSqaDDyTk/s1600-h/ManagedBean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 262px; height: 320px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SjRcCxy-UwI/AAAAAAAABmQ/-yqSqaDDyTk/s320/ManagedBean.png" alt="" id="BLOGGER_PHOTO_ID_5346999860392252162" border="0" /&gt;&lt;/a&gt;Este Managed Bean hereda de la clase "AbstractPageBean" para poder acceder a los métodos "getValue" y obtener el valor de la columna y fila actual cuando se este generando la tabla en la pagina template-client.xhtml.&lt;br /&gt;&lt;br /&gt;Ahora editaremos la página template-client.xhtml con el siguiente contenido:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SjRbX58PBRI/AAAAAAAABmI/PG89TF97GEg/s1600-h/template-client.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 231px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SjRbX58PBRI/AAAAAAAABmI/PG89TF97GEg/s320/template-client.png" alt="" id="BLOGGER_PHOTO_ID_5346999123844203794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Hecho esto nada mas bastara iniciar la base de datos crosstab de derby en Netbeans, realizar deploy al proyecto WebCrosstab y acceder a la ruta http://localhost:8084/WebCrosstab.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SjReDOkXuPI/AAAAAAAABmY/aXTxtm7w444/s1600-h/EjemploCrosstab.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SjReDOkXuPI/AAAAAAAABmY/aXTxtm7w444/s320/EjemploCrosstab.png" alt="" id="BLOGGER_PHOTO_ID_5347002067138885874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Adjunto el código fuente del &lt;a href="http://www.mediafire.com/file/ohtyylooyet/WebCrosstab.tar.gz"&gt;proyecto WebCrosstab&lt;/a&gt; y la estructura de la base de datos.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-6042715418121250740?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/6042715418121250740/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=6042715418121250740" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6042715418121250740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6042715418121250740?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/06/crosstab-con-icefaces.html" title="Crosstab con ICEfaces" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/SjRVww1Uq3I/AAAAAAAABl4/kHal25WjDwQ/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;D0EESHw5fCp7ImA9WxJXGU8.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-8079719992516636250</id><published>2009-06-13T08:47:00.000-07:00</published><updated>2009-06-13T13:40:09.224-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T13:40:09.224-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="facelets" /><category scheme="http://www.blogger.com/atom/ns#" term="jsp" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>Uso de Facelets y ICEfaces en Netbeans 6.5</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPKUwu5EvI/AAAAAAAABkg/bgy5U4h3XjQ/s1600-h/Facelets.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 100px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPKUwu5EvI/AAAAAAAABkg/bgy5U4h3XjQ/s320/Facelets.jpg" alt="" id="BLOGGER_PHOTO_ID_5346839640646685426" border="0" /&gt;&lt;/a&gt;Hace unos días una amiga me mencionaba que le hicieron de la comparación entre Struts y &lt;a href="http://krypto84sv.blogspot.com/search/label/jsf"&gt;JSF&lt;/a&gt; algo muy curioso que me contó fue que le dijeron que Struts es mucho mas rápido que &lt;a href="http://krypto84sv.blogspot.com/search/label/jsf"&gt;JSF&lt;/a&gt;, que tan cierto sea esto no me consta, ojala alguien pueda confirmarlo, pero de todas formas como informático siempre tengo la misión de buscar la eficiencia en mis aplicaciones aún cuando la tecnología que estoy usando de por si sea de las más veloces, así que por esa razón he decidido utilizar Facelets en mis proyectos del trabajo, en lugar de JSP convencionales.
&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;¿Pero en realidad que es Facelets?, para entenderlo enumerare sus características:
&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Es un framework para trabajar con plantillas.&lt;/li&gt;&lt;li&gt;Creación de componentes personalizados.&lt;/li&gt;&lt;li&gt;Utilización de etiquetas lógicas.&lt;/li&gt;&lt;/ul&gt;¿Pero que diferencia Facelets de los JSP?
&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;JSP&lt;/span&gt; son etiquetas para plantillas que al compilarse generan servlets.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Facelets &lt;/span&gt;es un lenguaje de plantillas para construir un árbol de componentes, no un servlet.&lt;/li&gt;&lt;li&gt;Por otra parte Facelet fue creado para cumplir con el ciclo de vida de JSF, al contrario de los JSP que el ciclo de vida de los servlet producidos es independiente al de JSF.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Como aquí no solo se trata de solamente conocer la tecnología al estilo del &lt;a href="http://www.srbyte.com/"&gt;Sr Byte&lt;/a&gt; (no se vayan a molestar compas, recuerden que soy fiel lector suyo), así que como es costumbre en este su espacio curvilíneo desarrollare un ejemplo practico de como utilizar Facelets, &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; y &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; 6.5 de forma muy simple.
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SjQOZcR5TqI/AAAAAAAABlw/NkDnr1msXtQ/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 63px; height: 70px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SjQOZcR5TqI/AAAAAAAABlw/NkDnr1msXtQ/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5346914487846391458" border="0" /&gt;&lt;/a&gt;Lo primero es tener &lt;a href="http://krypto84sv.blogspot.com/2009/05/empecemos-con-icefaces.html"&gt;instalado el plugin de ICEfaces&lt;/a&gt;, luego debemos instalar el plugin de Facelets, esto es muy sencillo, se hace mediante el menú "Tools" de Netbeans, la ruta es Tools -&gt; Plugins, en la pantalla de plugins nos posicionamos en la pestaña de "Available plugins" buscamos el que se llama &lt;span style="font-weight: bold;"&gt;Facelets Support&lt;/span&gt;, lo marcamos y procedemos a instalarlo.
&lt;br /&gt;
&lt;br /&gt;Ya teniendo instalado los respectivos plugins, procedemos a crear un proyecto Web, en este ejemplo le pondré de nombre EjemploFacelets y ocupare como servidor Tomcat 6.0.18 que ya viene integrado con &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt;.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPYcJ5xAiI/AAAAAAAABkw/uEYznPdHmiI/s1600-h/ServidorEjemplo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 220px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPYcJ5xAiI/AAAAAAAABkw/uEYznPdHmiI/s320/ServidorEjemplo.png" alt="" id="BLOGGER_PHOTO_ID_5346855160825053730" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Al dar siguiente seleccionaremos los frameworks &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; y Facelets, notamos que al posicionarnos sobre el framework Facelets, en la parte de abajo aparece las propiedades de configuración del framework, para este debemos ubicarnos en la pestaña "Libraries" y en la propiedad "Register Libraries" seleccionamos la opción &lt;span style="font-weight: bold;"&gt;Facelets ICEfaces Run-Time 1.7.2&lt;/span&gt; y damos clic en finalizar.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPYfEt581I/AAAAAAAABk4/9VMMMQf6sOU/s1600-h/ConfiguracionFacelets.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPYfEt581I/AAAAAAAABk4/9VMMMQf6sOU/s320/ConfiguracionFacelets.png" alt="" id="BLOGGER_PHOTO_ID_5346855210972738386" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego de creado veremos que se nos abrirá un jsp llamado welcomeJSF.jsp ese no lo utilizaremos así que yo siempre procedo a borrarlo, la estructura del proyecto quedará de la siguiente manera:
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPZ8mWIGEI/AAAAAAAABlA/fVLujZ4fU28/s1600-h/Estructura+del+proyecto.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 223px; height: 261px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPZ8mWIGEI/AAAAAAAABlA/fVLujZ4fU28/s320/Estructura+del+proyecto.png" alt="" id="BLOGGER_PHOTO_ID_5346856817727641666" border="0" /&gt;&lt;/a&gt;Vemos que solamente hay un jsp, ese lo editaremos como página de inicio en web.xml ya que este redireccionara a nuestra pagina template-client, ahora lo curioso y nuevo aquí es que aparecen dos archivos xhtml, que apartir de ahora allí trabajaremos nuestras etiquetas y estos por así decirlo se traducirán a jps.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Procedemos a abrir el archivo forward.jsp y lo editamos para que en la etiqueta donde redirecciona la página destino nada mas cambiamos la extensión de la página a donde se redireccionara de jsf a jspx.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;%@&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;page&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;contentType&lt;/span&gt;=&lt;span style="color: rgb(255, 153, 0);"&gt;"text/html"&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;pageEncoding&lt;/span&gt;=&lt;span style="color: rgb(255, 153, 0);"&gt;"UTF-8"&lt;/span&gt;%&gt;
&lt;br /&gt;&lt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;jsp:forward&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;page&lt;/span&gt;=&lt;span style="color: rgb(255, 153, 0);"&gt;"template-client.jspx"&lt;/span&gt;/&gt;
&lt;br /&gt;
&lt;br /&gt;Ahora abrimos el archivo web.xml en vista XML y en el tag de welcome-file-list debe quedar así:
&lt;br /&gt;
&lt;br /&gt;&lt;code&gt;
&lt;br /&gt;&amp;lt;welcome-file-list&amp;gt;
&lt;br /&gt;  &amp;lt;welcome-file&amp;gt;forward.jsp&amp;lt;/welcome-file&amp;gt;
&lt;br /&gt;&amp;lt;/welcome-file-list&amp;gt;
&lt;br /&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;Lo guardamos y podemos hacerle deploy al proyecto y accedemos mediante la ruta http://localhost:8084/EjemploFacelets aparecera el siguiente contenido:
&lt;br /&gt;
&lt;br /&gt;Hasta el momento no se ha utilizado nada de &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; haremos un calculo sencillo de colones salvadoreños a dolares estadounidenses, y para ello será necesario crear un ManagedBean de nombre ConversorDolares y tipo Request, para ello hacemos clic en el botón New File de la barra de herramientas de &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt;,  en la lista de Categorías de la  nueva ventana seleccionamos "JavaServer Faces" y en la parte derecha "JSF Managed Bean" y damos clic en el botón siguiente.
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SjPfruSpxiI/AAAAAAAABlI/zHKdsPkk4Ec/s1600-h/NuevoManagedBean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 219px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SjPfruSpxiI/AAAAAAAABlI/zHKdsPkk4Ec/s320/NuevoManagedBean.png" alt="" id="BLOGGER_PHOTO_ID_5346863124872545826" border="0" /&gt;&lt;/a&gt;Ahora le colocaremos el nombre que habíamos mencionado antes al Managed Bean y que sea de tipo request, en el campo package escribimos el paquete donde estará alojado nuestro managed bean en mi caso coloque org.dani.ejemplo.facelets
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPgQHGd8PI/AAAAAAAABlQ/GICRQWntGS4/s1600-h/ConfManagedBean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 220px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SjPgQHGd8PI/AAAAAAAABlQ/GICRQWntGS4/s320/ConfManagedBean.png" alt="" id="BLOGGER_PHOTO_ID_5346863750007615730" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;Hecho esto hacemos clic en finalizar, abrimos nuestro Managed Bean y creamos la siguiente propiedad y método.
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPyXmf-vdI/AAAAAAAABlY/8wTNiBlonwk/s1600-h/ManagedBean.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPyXmf-vdI/AAAAAAAABlY/8wTNiBlonwk/s320/ManagedBean.png" alt="" id="BLOGGER_PHOTO_ID_5346883669904506322" border="0" /&gt;&lt;/a&gt;Ahora editamos el código del archivo template-client.xhtml y se verá así
&lt;br /&gt;
&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPyxxLnisI/AAAAAAAABlg/5S7yfEwK3dk/s1600-h/template-client.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 141px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPyxxLnisI/AAAAAAAABlg/5S7yfEwK3dk/s320/template-client.png" alt="" id="BLOGGER_PHOTO_ID_5346884119448488642" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;Realizamos el respectivo deploy accedemos a la misma dirección anteriormente mencionada y veremos lo siguiente:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPzB7mzltI/AAAAAAAABlo/MfOLpSVpqWo/s1600-h/AplicacionDesarrollada.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 167px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SjPzB7mzltI/AAAAAAAABlo/MfOLpSVpqWo/s320/AplicacionDesarrollada.png" alt="" id="BLOGGER_PHOTO_ID_5346884397124785874" border="0" /&gt;&lt;/a&gt;Comparto el &lt;a href="http://www.mediafire.com/file/ttmknmtym2t/EjemploFacelets.tar.gz"&gt;proyecto EjemploFacelets&lt;/a&gt; para que puedan estudiarlo mas detenidamente.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nota:&lt;/span&gt; No copie el texto del código ya que no se mira muy bien en blogger y poder ver las tabulaciones es de mucha ayuda para entender los ejemplos.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-8079719992516636250?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/8079719992516636250/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=8079719992516636250" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8079719992516636250?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8079719992516636250?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/06/uso-de-facelets-y-icefaces-en-netbeans.html" title="Uso de Facelets y ICEfaces en Netbeans 6.5" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_tPLVjrBRifE/SjPKUwu5EvI/AAAAAAAABkg/bgy5U4h3XjQ/s72-c/Facelets.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;D0cCRHc6cCp7ImA9WxJXF0U.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-7109886290445088417</id><published>2009-06-07T01:08:00.000-07:00</published><updated>2009-06-11T22:37:45.918-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-11T22:37:45.918-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="eliminatoria" /><category scheme="http://www.blogger.com/atom/ns#" term="mexico" /><category scheme="http://www.blogger.com/atom/ns#" term="el salvador" /><category scheme="http://www.blogger.com/atom/ns#" term="concacaf" /><title>Hasta la victoria siempre</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/Sit4-jSUszI/AAAAAAAABkY/tdHvs2_WsYM/s1600-h/tazumal.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 141px; height: 95px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/Sit4-jSUszI/AAAAAAAABkY/tdHvs2_WsYM/s320/tazumal.jpg" alt="" id="BLOGGER_PHOTO_ID_5344498398824543026" border="0" /&gt;&lt;/a&gt;Dejando de lado &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEFaces&lt;/a&gt;,programación, trabajo y más mierdas informáticas, hoy es momento de dedicarle al pueblo salvadoreño la fiesta de triunfo sobre el combinado mexicano, después de haber sido ofendidos por un comentarista deportivo en la cual una cadena de televisión que se considero seria por mucho tiempo cree que la mejor manera de subir niveles de audiencia es que crea sensacionalismo y enemistad esta dejando mucho que desear.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Nuestros muchachos de clubes nacionales (FAS, Nejapa, Vista Hermosa, Alianza, Firpo, etc...) enfrentaron honorablemente a "personajes de la farándula" en lo cual la humildad, el respeto y la disciplina tuvo justicia.&lt;br /&gt;&lt;br /&gt;Felicito a todos mis compatriotas en todos los rincones del mundo y saludo a la hermana república de México por esta gran fiesta deportiva y que no dejen que personas como el "pseudo comentarista" de una mala imagen de ustedes.&lt;br /&gt;&lt;br /&gt;Ahora que ya escribí me iré de regreso con los compas a seguir poniéndome una súper talega en celebración.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-7109886290445088417?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/7109886290445088417/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=7109886290445088417" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7109886290445088417?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7109886290445088417?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/06/hasta-la-victoria-siempre.html" title="Hasta la victoria siempre" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/Sit4-jSUszI/AAAAAAAABkY/tdHvs2_WsYM/s72-c/tazumal.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Ck4GRX85eyp7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-6149851228562731170</id><published>2009-06-06T08:10:00.001-07:00</published><updated>2009-06-13T09:35:24.123-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T09:35:24.123-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="agrupar" /><category scheme="http://www.blogger.com/atom/ns#" term="columnas" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="headerrow" /><category scheme="http://www.blogger.com/atom/ns#" term="tablas" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><category scheme="http://www.blogger.com/atom/ns#" term="columngroup" /><title>Agrupando columnas con Icefaces</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqH2oHtbqI/AAAAAAAABjY/tUScJ_zNqns/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqH2oHtbqI/AAAAAAAABjY/tUScJ_zNqns/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5344233280380956322" border="0" /&gt;&lt;/a&gt;Se que bien de repente me estoy adelantando a algunos temas con respecto a &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; y mas aún en lo que concierne a tablas, pero es que para ver esos puntos es bueno remitirse al &lt;a href="http://www.icefaces.org/main/resources/tutorials.iface"&gt;tutorial de componentes oficial de Icefaces&lt;/a&gt; y me decidí a escribir esta entrada ya que no me dejaba muy claro la cuestión de agrupar columnas, en este post no se tocara nada de funcionalidad ajax, pues por que la forma de agrupar columnas es un poco diferente a la de woodstock y me parecio importante explicarlo.&lt;br /&gt;&lt;br /&gt;Primeramente hay que crear un proyecto Web a través de &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt;, &lt;a href="http://krypto84sv.blogspot.com/2009/05/empecemos-con-icefaces.html"&gt;claro que hay que tener instalado el plugin de Icefaces&lt;/a&gt;, a mi me gusta utilizar como contenedor para mis aplicaciones Tomcat lo mas que me sea posible y selecciono el framework "Visal Web ICEfaces". No explicare la creación del proyecto porque eso es muy intuitivo.&lt;br /&gt;&lt;br /&gt;Lo primero que haremos en crear nuestra lista de java beans que seran los que se desplegaran en la tabla. Para no hacer muy largo el tutorial explicando como pegarse a la base de datos y demás bla, bla simulare que mis java beans los utilizare como objetos de persistencia obtenidos a través de JPA, asi que crearemos la siguiente clase:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SiqbWyrd3BI/AAAAAAAABjg/oVHFOBSqSaQ/s1600-h/ClasePersona.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 171px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SiqbWyrd3BI/AAAAAAAABjg/oVHFOBSqSaQ/s320/ClasePersona.png" alt="" id="BLOGGER_PHOTO_ID_5344254723692026898" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;"Hacer clic en la imagen para ver mas grande"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Hasta aqui ya tenemos definida nuestra estructura y un metodo estatico para obtener un arreglo de "Personas", pero falta definir los getter y setter para los campos de la clase para que puedan ser accedidos por los componentes de &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt;, a través de &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; es muy sencillo hacer esto en lugar de hacerlo a pie:&lt;br /&gt;&lt;br /&gt;Damos clic derecho sobre cualquier parte de la clase "Persona" y damos clic y vamos a la opción "Insert code".&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SiqiakUvu1I/AAAAAAAABjw/qtedYts4Pfk/s1600-h/GenerateCode.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 168px; height: 165px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SiqiakUvu1I/AAAAAAAABjw/qtedYts4Pfk/s320/GenerateCode.png" alt="" id="BLOGGER_PHOTO_ID_5344262485139503954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En la ventana "Generate" seleccionamos "Getter and Setter..."&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/Siqiw__-5BI/AAAAAAAABkA/zl3AL0jKd1M/s1600-h/GenerateGetterSetters.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 164px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/Siqiw__-5BI/AAAAAAAABkA/zl3AL0jKd1M/s320/GenerateGetterSetters.png" alt="" id="BLOGGER_PHOTO_ID_5344262870525731858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Marcamos todas las propiedades y automáticamente generara nuestros getter y setter en nuestra clase.&lt;br /&gt;&lt;br /&gt;Ahora simplemente en nuestra página jsp necesitamos agregar una propiedad privada de tipo arreglo de personas e inicializarla por medio del método estatico de la clase Persona.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private&lt;/span&gt; Persona[] &lt;span style="color: rgb(51, 204, 0);"&gt;personas&lt;/span&gt;=Persona.&lt;span style="font-style: italic;"&gt;getPersonas()&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Luego en la clase del jsp debemos crear el getter y setter del campo privado al igual como lo hicimos en la clase Persona, en mi caso mi jsp se llama Page1.jsp asi que en el java code de esa página generamos el getter y setter.&lt;br /&gt;&lt;br /&gt;Ahora la parte mas importante es el código jsp de nuestra página, si bien &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; provee de un diseñador visual no esta demás entender los tags de &lt;a href="http://krypto84sv.blogspot.com/search/label/icefaces"&gt;ICEfaces&lt;/a&gt; ya que se pueden crear cosas muy interesantes por la flexibilidad de estos componentes.&lt;br /&gt;&lt;br /&gt;Adjunto el código jsp de la página con su respectiva explicación y sus bindings hacia las propiedades de Page1, este código puede ser colocado ya sea en un PanelGrido o en una simple tabla HTML dentro del código jsp.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/Siqbbfie8JI/AAAAAAAABjo/zMNER64kP30/s1600-h/jspx.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 259px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/Siqbbfie8JI/AAAAAAAABjo/zMNER64kP30/s320/jspx.png" alt="" id="BLOGGER_PHOTO_ID_5344254804453421202" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;"Hacer clic en la imagen para ver mas grande"&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Luego de esto corremos nuestra aplicación para ver su resultado, la ruta de la aplicación sería &lt;span style="font-weight: bold;"&gt;http://localhost:8084/Tablas/Page1.jspx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqlwJgHzYI/AAAAAAAABkI/8G2JATaTJ5w/s1600-h/EjecutandoEjemplo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 198px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqlwJgHzYI/AAAAAAAABkI/8G2JATaTJ5w/s320/EjecutandoEjemplo.png" alt="" id="BLOGGER_PHOTO_ID_5344266154431466882" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;"Hacer clic en la imagen para ver mas grande"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;Comparto el proyecto elaborado en &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; para que puedan probarlo:&lt;br /&gt;&lt;a href="http://www.mediafire.com/file/nu0hjtyznmw/Tablas.tar.gz"&gt;Tablas.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Bueno compas despues de haber realizado este post me dispongo a abastacerme de bebidas embriagantes para ver el juego &lt;a href="http://www.google.com.sv/search?hl=es&amp;amp;q=el+salvador+vs+mexico&amp;amp;btnG=Buscar&amp;amp;lr="&gt;El Salvador vs México&lt;/a&gt;, que primero Dios logremos celebrar en la noche la victoria de nuestro combinado nacional y cerrarle el hocico al bocón de David Faitelson.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-6149851228562731170?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/6149851228562731170/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=6149851228562731170" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6149851228562731170?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6149851228562731170?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/06/agrupando-columnas-con-icefaces.html" title="Agrupando columnas con Icefaces" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SiqH2oHtbqI/AAAAAAAABjY/tUScJ_zNqns/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Ck8GQnY8fSp7ImA9WxJQF0k.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-6353323692771353317</id><published>2009-05-30T11:33:00.000-07:00</published><updated>2009-05-30T20:33:43.875-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-30T20:33:43.875-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="woodstock" /><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="framework" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="javahispano" /><category scheme="http://www.blogger.com/atom/ns#" term="j2ee" /><category scheme="http://www.blogger.com/atom/ns#" term="podcast" /><category scheme="http://www.blogger.com/atom/ns#" term="icefaces" /><category scheme="http://www.blogger.com/atom/ns#" term="jsf" /><title>Empecemos con IceFaces</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SiGDshJWojI/AAAAAAAABjI/jmTgnLpQag8/s1600-h/ICEfaces.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 63px; height: 70px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SiGDshJWojI/AAAAAAAABjI/jmTgnLpQag8/s320/ICEfaces.jpg" alt="" id="BLOGGER_PHOTO_ID_5341695433873203762" border="0" /&gt;&lt;/a&gt;Desde hace un montón que quería escribir sobre IceFaces, este es un framework Java encargado de los componentes web de la interfaz de usuario para JSF (Java Server Faces), actualmente el framework por defecto que se utiliza con JSF en &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; es WoodStock, he leido muchos comentarios que Icefaces puede ser el sustituto oficial de Woodstock ya que la característica principal de Icefaces es que es full Ajax, no es necesario configurar algo adicional ni estar tratando con varios archivos xml de configuración solamente es necesario instalar el plugin para &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; o Eclipse, para este ultimo haré un post aparte para trabajar con Eclipse y Icefaces, pero me centrare mas en &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; ya que se integra mejor con JSF y Icefaces.&lt;br /&gt;&lt;br /&gt;Recomiendo escuchar el &lt;a href="http://www.javahispano.org/contenidos/es/javahispano_podcast__043__programacion_con_icefaces/"&gt;podcast sobre Icefaces de Javahispano&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/SiGEKLtmKmI/AAAAAAAABjQ/wkUTnFRH2fs/s1600-h/nb-logo.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 80px; height: 80px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/SiGEKLtmKmI/AAAAAAAABjQ/wkUTnFRH2fs/s320/nb-logo.png" alt="" id="BLOGGER_PHOTO_ID_5341695943515712098" border="0" /&gt;&lt;/a&gt;Para muchos amigos que no disponen de una conexión a internet &lt;a href="http://www.icefaces.org/main/downloads/detail.iface"&gt;se puede descargar el plugin para Netbeans&lt;/a&gt; ya sea la versión 6.5 o 6.5.1, hay que prestar mucha atención con la versión de Icefaces que descargaremos por que sino dará problemas al abrir el proyecto en otro &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; que no tenga la misma versión de Icefaces las que se encuentran son 1.8 y 1.7.2.&lt;br /&gt;&lt;br /&gt;Es recomendable registrarse en la página de Icefaces, para tener acceso a los demos y tutoriales sobre Icefaces que están muy buenos, también desarrollare algunos ejemplos sobre el uso de los componentes para que la mara pueda aclara algunas dudo sobre su utilización.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-6353323692771353317?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/6353323692771353317/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=6353323692771353317" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6353323692771353317?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/6353323692771353317?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/empecemos-con-icefaces.html" title="Empecemos con IceFaces" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SiGDshJWojI/AAAAAAAABjI/jmTgnLpQag8/s72-c/ICEfaces.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DkABRXg6fCp7ImA9WxJRF0s.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-3399148432048538890</id><published>2009-05-19T13:09:00.000-07:00</published><updated>2009-05-19T13:25:54.614-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-19T13:25:54.614-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="multiplataforma" /><category scheme="http://www.blogger.com/atom/ns#" term="3gp" /><category scheme="http://www.blogger.com/atom/ns#" term="gpl" /><category scheme="http://www.blogger.com/atom/ns#" term="convertidor" /><category scheme="http://www.blogger.com/atom/ns#" term="mp3" /><category scheme="http://www.blogger.com/atom/ns#" term="mobile media converter" /><category scheme="http://www.blogger.com/atom/ns#" term="ffmeg" /><category scheme="http://www.blogger.com/atom/ns#" term="audio" /><category scheme="http://www.blogger.com/atom/ns#" term="licencia libre" /><category scheme="http://www.blogger.com/atom/ns#" term="mpeg" /><category scheme="http://www.blogger.com/atom/ns#" term="avi" /><title>Convertir formatos en GNU/Linux con Mobile Media Converter</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMUchdgH2I/AAAAAAAABi4/hV9LQCpBQGA/s1600-h/auto.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 102px; height: 102px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMUchdgH2I/AAAAAAAABi4/hV9LQCpBQGA/s320/auto.png" alt="" id="BLOGGER_PHOTO_ID_5337632463615172450" border="0" /&gt;&lt;/a&gt;Navegando por allí encontre la aplicación Mobile Media Converter que esta basada en FFMPEG y podemos convertir formatos mp3, amr, 3gp o wmv (menos la versión 9) a wma, wav, amr, mp3, 3gp o mpeg. Que son los formatos mas utilizados por nuestros Teléfonos móviles.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/ShMVGRs_biI/AAAAAAAABjA/HT6_6w1olho/s1600-h/cc-GPL-a.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 88px; height: 62px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/ShMVGRs_biI/AAAAAAAABjA/HT6_6w1olho/s320/cc-GPL-a.png" alt="" id="BLOGGER_PHOTO_ID_5337633180939677218" border="0" /&gt;&lt;/a&gt;Recomiendo utilizar esta aplicación ya que tiene licencia libre y puede instalarse tanto en Windows como en sistemas GNU/Linux, para este ultimo mencionado se pueden utilizar dos tipos de instaladores un *.deb y un binario, en mi caso probe el binario por que no se necesita resolverle ninguna dependencia para que funcione.&lt;br /&gt;&lt;br /&gt;Simplemente baje el instalador de la &lt;a href="http://www.miksoft.net/mobileMediaConverter.htm"&gt;página de Mobile Media Converter&lt;/a&gt;, descomprimi el archivo y ya.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ tar -xvf mmc-lin.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ cd MobileMediaConverter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ ./MobileMediaConverter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMT5yu7R8I/AAAAAAAABiw/xi4deMzRgg4/s1600-h/mmc.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 156px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMT5yu7R8I/AAAAAAAABiw/xi4deMzRgg4/s320/mmc.PNG" alt="" id="BLOGGER_PHOTO_ID_5337631866956236738" border="0" /&gt;&lt;/a&gt;"Captura de pantalla de Mobile Media Converter"&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-3399148432048538890?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/3399148432048538890/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=3399148432048538890" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/3399148432048538890?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/3399148432048538890?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/convertir-formatos-en-gnulinux-con.html" title="Convertir formatos en GNU/Linux con Mobile Media Converter" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/ShMUchdgH2I/AAAAAAAABi4/hV9LQCpBQGA/s72-c/auto.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkUCQHk_cSp7ImA9WxJRF0k.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-8993764327535293431</id><published>2009-05-19T06:31:00.001-07:00</published><updated>2009-05-19T06:37:41.749-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-19T06:37:41.749-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="programador" /><category scheme="http://www.blogger.com/atom/ns#" term="humor" /><title>Si los programadores construyesen aviones</title><content type="html">Comparto con ustedes este excelente video promocional, me gusto la frase que dice el tipo al principio del video:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;"Algunas personas les gusta realizar planos, a nosotros nos gusta hacer los aviones en el aire."&lt;/span&gt;&lt;/blockquote&gt;A ver cuando decretan el día nacional del programador.&lt;br /&gt;Saludos.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UZq4sZz56qM&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/UZq4sZz56qM&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-8993764327535293431?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/8993764327535293431/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=8993764327535293431" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8993764327535293431?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/8993764327535293431?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/si-los-programadores-construyesen.html" title="Si los programadores construyesen aviones" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;Ak8CQ3YzfCp7ImA9WxJREks.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-4664577341487569123</id><published>2009-05-13T18:42:00.000-07:00</published><updated>2009-05-13T19:41:02.884-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-13T19:41:02.884-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><category scheme="http://www.blogger.com/atom/ns#" term="jdbc" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><category scheme="http://www.blogger.com/atom/ns#" term="derby" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="sybase" /><category scheme="http://www.blogger.com/atom/ns#" term="glassfish" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><category scheme="http://www.blogger.com/atom/ns#" term="apache" /><category scheme="http://www.blogger.com/atom/ns#" term="tomcat" /><category scheme="http://www.blogger.com/atom/ns#" term="servidor web" /><category scheme="http://www.blogger.com/atom/ns#" term="driver" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title>Habilitar Tomcat y Glassfish para conexion a bases de datos</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SguCweyAxAI/AAAAAAAABiY/DLfYdG5EYTY/s1600-h/glassfish_logo.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 107px; height: 49px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SguCweyAxAI/AAAAAAAABiY/DLfYdG5EYTY/s320/glassfish_logo.gif" alt="" id="BLOGGER_PHOTO_ID_5335501952958645250" border="0" /&gt;&lt;/a&gt;En muchas ocasiones me he visto en la necesidad de configurar mi &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; o Glassfish para que mis aplicaciones se peguen a su respectiva base de datos, aun cuando en las librerías de los respectivos proyectos incluya el driver jdbc necesario.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SguC8yE-3aI/AAAAAAAABio/XvbQdg0nrAo/s1600-h/tomcat_logo.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 89px; height: 98px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SguC8yE-3aI/AAAAAAAABio/XvbQdg0nrAo/s320/tomcat_logo.gif" alt="" id="BLOGGER_PHOTO_ID_5335502164296916386" border="0" /&gt;&lt;/a&gt;La forma de configurar &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; y Glassfish es muy simple solamente es necesario incluir en la carpeta "lib" que esta dentro de la ruta de instalación de cualquier de los dos servidores el respectivo JAR.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Para &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; y Glassfish:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$HOME_PATH/lib&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Donde $HOME_PATH es la ruta de instalación de &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En mi debian el instalador de &lt;a href="http://krypto84sv.blogspot.com/search/label/netbeans"&gt;Netbeans&lt;/a&gt; deja el $HOME_PATH de &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; y Glassfish en la siguiente ubicación:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/usr/local/apache-tomcat-6.0.18&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/usr/local/glassfish-v2ur2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Para windows como tengo ratos de no instalarlo &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; no recuerdo donde lo dej el instalador por defecto pero al igual que en GNU/Linux al obtener el archivo descomprimible lo podemos ubicar en el lugar que queramos el $HOME_PATH.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En el caso de sistemas GNU/Linux ó Unix no es necesario copiar fisicamete el archivo pues también se puede utilizar un enlace simbólico.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# ln -s /ruta/del/driver/jdbc_driver.jar $HOME_PATH/lib&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Como también en mis aplicaciones el &lt;a href="http://es.wikipedia.org/wiki/Data_Access_Object"&gt;DAO&lt;/a&gt; &lt;a href="http://www.oracle.com/technology/products/ias/toplink/index.html"&gt;Oracle TopLink&lt;/a&gt; para &lt;a href="http://krypto84sv.blogspot.com/search/label/jpa"&gt;JPA&lt;/a&gt; en el caso de Glassfish no es necesario por que ya esta incluido pero para &lt;a href="http://krypto84sv.blogspot.com/search/label/tomcat"&gt;Tomcat&lt;/a&gt; no así que es necesario &lt;a href="http://www.oracle.com/technology/products/ias/toplink/jpa/download.html"&gt;descargar los respectivos JAR de Oracle TopLink&lt;/a&gt; para poder usar persistencia de datos.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Luego de eso reiniciamos los servicios.&lt;br /&gt;&lt;br /&gt;Dejare los links para poder descargar los respectivos driver jdbc para los diferentes gestores de bases de datos mas populares.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev.mysql.com/downloads/connector/j/3.0.html"&gt;JDBC Driver para MySQL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html"&gt;JDBC Driver para Oracle&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jdbc.postgresql.org/"&gt;JDBC Driver para PostgreSQL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://db.apache.org/derby/docs/dev/devguide/cdevdvlp40653.html"&gt;JDBC Driver para Apache Derby&lt;/a&gt;&lt;br /&gt;JDBC Driver para SQL Server / Sybase puede usarse el &lt;a href="http://jtds.sourceforge.net/"&gt;driver libre&lt;/a&gt; o &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=99b21b65-e98f-4a61-b811-19912601fdc9&amp;amp;displaylang=en"&gt;el propietario.&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-4664577341487569123?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/4664577341487569123/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=4664577341487569123" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4664577341487569123?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4664577341487569123?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/habilitar-tomcat-y-glassfish-para.html" title="Habilitar Tomcat y Glassfish para conexion a bases de datos" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tPLVjrBRifE/SguCweyAxAI/AAAAAAAABiY/DLfYdG5EYTY/s72-c/glassfish_logo.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEQNRHs-fCp7ImA9WxJSE0Q.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-5077310828352927860</id><published>2009-05-03T15:50:00.000-07:00</published><updated>2009-05-03T16:13:15.554-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-03T16:13:15.554-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="aplicaciones" /><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="debian" /><category scheme="http://www.blogger.com/atom/ns#" term="konqueror" /><category scheme="http://www.blogger.com/atom/ns#" term="kopete" /><category scheme="http://www.blogger.com/atom/ns#" term="kde" /><category scheme="http://www.blogger.com/atom/ns#" term="iceweasel" /><category scheme="http://www.blogger.com/atom/ns#" term="navegador web" /><title>Cambiar navegador por defecto para aplicaciones KDE</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/Sf4gkvGgINI/AAAAAAAABh4/sMPtrP12Pek/s1600-h/kde.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 50px; height: 50px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/Sf4gkvGgINI/AAAAAAAABh4/sMPtrP12Pek/s320/kde.png" alt="" id="BLOGGER_PHOTO_ID_5331734824344363218" border="0" /&gt;&lt;/a&gt;Siempre cuando utilizo aplicaciones de &lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt;KDE&lt;/a&gt; así como Kopete y quiero abrir un enlace url a través de ella siempre me abre por defecto Konqueror cuando en mi caso deseo que &lt;a href="http://krypto84sv.blogspot.com/search/label/firefox"&gt;Firefox ó Iceweasel&lt;/a&gt; sea mi navegador por defecto, así que he decido explicar como ambiar esta situación en &lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt;KDE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Debemos ir al "Selector de componentes" en mi caso tengo Debian Lenny y la ubicación de la opción es:&lt;br /&gt;&lt;br /&gt;Menú K -&gt; Centro de Control -&gt; Componentes de KDE -&gt; Selector de componentes&lt;br /&gt;&lt;br /&gt;Nos ubicamos en la opción "Navegador Web", y marcamos la opción "en el siguiente navegador" y escribimos:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;firefox -remote "openurl(%U,new-tab)" || firefox&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tPLVjrBRifE/Sf4ik2xKjqI/AAAAAAAABiI/9w883z73F88/s1600-h/sel_componente.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 220px;" src="http://2.bp.blogspot.com/_tPLVjrBRifE/Sf4ik2xKjqI/AAAAAAAABiI/9w883z73F88/s320/sel_componente.png" alt="" id="BLOGGER_PHOTO_ID_5331737025425608354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Damos clic en el botón aplicar y el cambio estará hecho.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-5077310828352927860?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/5077310828352927860/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=5077310828352927860" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5077310828352927860?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/5077310828352927860?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/05/cambiar-navegador-por-defecto-para.html" title="Cambiar navegador por defecto para aplicaciones KDE" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tPLVjrBRifE/Sf4gkvGgINI/AAAAAAAABh4/sMPtrP12Pek/s72-c/kde.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUUGSX45eip7ImA9WxJTGUk.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-2902727858459214326</id><published>2009-04-26T18:41:00.000-07:00</published><updated>2009-04-28T12:33:48.022-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-28T12:33:48.022-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="debian" /><category scheme="http://www.blogger.com/atom/ns#" term="jsp" /><category scheme="http://www.blogger.com/atom/ns#" term="tomcat 6" /><category scheme="http://www.blogger.com/atom/ns#" term="apache2" /><category scheme="http://www.blogger.com/atom/ns#" term="tomcat" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="servlets" /><title>Integracion Apache2 y Tomcat 6 con módulo JK</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SfUNhvjdogI/AAAAAAAABho/sdbSJGD4fiU/s1600-h/apache_tomcat_3d_logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 129px; height: 124px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SfUNhvjdogI/AAAAAAAABho/sdbSJGD4fiU/s320/apache_tomcat_3d_logo.png" alt="" id="BLOGGER_PHOTO_ID_5329180607414903298" border="0" /&gt;&lt;/a&gt;Siento bastante raro estar haciendo un post, puesto que había dejado prácticamente abandonado mi blog.&lt;br /&gt;&lt;br /&gt;Pero bien, esta vez quiero compartir con ustedes la forma de como integrar el servidor web Apache2 con el contenedor de servlets y Java Server Pages, &lt;a href="http://krypto84sv.blogspot.com/2008/06/instalar-tomcat-6-en-debian-gnulinux.html"&gt;Tomcat 6&lt;/a&gt; específicamente la &lt;a href="http://tomcat.apache.org/download-60.cgi"&gt;versión 6.0.18&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Si bien en los repositorios de Debian tanto como de Ubuntu se puede descargar la versión 5 de Tomcat yo he optado por descargar la versión 6, antes de seguir con los pasos siguientes es necesario &lt;a href="http://krypto84sv.blogspot.com/2008/06/instalar-tomcat-6-en-debian-gnulinux.html"&gt;tener ya instalado Tomcat 6&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SfUSP2RO6NI/AAAAAAAABhw/SkOdHKvAIHQ/s1600-h/apache_logo.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 116px; height: 54px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SfUSP2RO6NI/AAAAAAAABhw/SkOdHKvAIHQ/s320/apache_logo.png" alt="" id="BLOGGER_PHOTO_ID_5329185797537982674" border="0" /&gt;&lt;/a&gt;Antes que nada procedemos a descargar Apache2 y el módulo JK para poder recibir conexiones a través de puerto 80 y redireccionarlo hacia Tomcat.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# apt-get install apache2 libapache2-mod-jk&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego copiamos un archivo de configuración para incluirlo luego en el archivo de configuración de Apache2.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# cp /usr/share/doc/libapache2-mod-jk/httpd_example_apache2.conf /etc/apache2/mod_jk.conf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego editamos el archivo apache2.conf para agregar una línea hasta el final del archivo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# cd /etc/apache2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# nano apache2.conf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Include /etc/apache2/mod_jk.conf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego editamos el archivo workers.properties&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# nano /etc/libapache2-mod-jk/workers.properties&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Debemos buscar las siguientes tres líneas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;workers.tomcat_home=/usr/share/tomcat5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;workers.java_home=/usr/lib/jvm/java-gcj&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En la primera debemos agregar la ruta de instalacion de nuestro tomcat en mi caso la ruta de mi instalacion esta en /opt/apache-tomcat en la segunda línea debemos definir la ruta de nuestro JDK la mia es /usr/lib/j2sdk1.6-sun.&lt;br /&gt;&lt;br /&gt;Debería quedar así:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;workers.tomcat_home=/opt/apache-tomcat&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;workers.java_home=/usr/lib/j2sdk1.6-sun&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego creamos un Virtual Host para Tomcat en Apache2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/tomcat&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Editamos el virtual host agregandole la siguiente línea en medio de los tags &lt;virtualhost&gt;&lt;/virtualhost&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;JkMount /* ajp13_worker&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Reiniciamos apache2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;# /etc/init.d/apache2 restart&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y listo al ingresar a la dirección http://localhost/examples/servlets&lt;br /&gt;&lt;br /&gt;Podemos visualizar los ejemplos que trae Tomcat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-2902727858459214326?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/2902727858459214326/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=2902727858459214326" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2902727858459214326?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/2902727858459214326?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/04/integracion-apache2-y-tomcat-6-con.html" title="Integracion Apache2 y Tomcat 6 con módulo JK" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tPLVjrBRifE/SfUNhvjdogI/AAAAAAAABho/sdbSJGD4fiU/s72-c/apache_tomcat_3d_logo.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;D08MSX88eSp7ImA9WxVWFk0.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-7663783585024880664</id><published>2009-02-25T15:42:00.000-08:00</published><updated>2009-02-25T15:51:28.171-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-25T15:51:28.171-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Monseñor Romero" /><category scheme="http://www.blogger.com/atom/ns#" term="Martir" /><category scheme="http://www.blogger.com/atom/ns#" term="vigilia" /><category scheme="http://www.blogger.com/atom/ns#" term="Sonsonate" /><category scheme="http://www.blogger.com/atom/ns#" term="San Romero de América" /><title>Invitación vigilia Monseñor Romero</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tPLVjrBRifE/SaXZHANd00I/AAAAAAAABhg/-mGhFtHmh9M/s1600-h/romero-1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 192px; height: 189px;" src="http://1.bp.blogspot.com/_tPLVjrBRifE/SaXZHANd00I/AAAAAAAABhg/-mGhFtHmh9M/s320/romero-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5306886450264789826" border="0" /&gt;&lt;/a&gt;La comisión pastoral social diócesis de Sonsonate invitan a la VI vigilia en homenaje a San Romero de América en el XXIX aniversario de su muerte maritirial.
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;Datos del día del evento:
&lt;br /&gt;
&lt;br /&gt;Sábado 7 de Marzo de 2009
&lt;br /&gt;Hora: 6:30 pm a 4:30 am
&lt;br /&gt;Lugar: Atrio de catedral "Santisíma trinidad" de Sonsonate.
&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 3.0  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;Habrá: santa misa presidida por mons. José Adolfo Mójica y sacerdotes de la diócesis de Sonsonate y luego programa cultural (música popular, declamación, testimonios, videos, teatro, rifas, comida típica y más…).
&lt;br /&gt;
&lt;br /&gt;Grupos invitados: los torogoces de Morazán, Yolocamba Ita, Jilguero, Mayas, Sierra madre, Chasquis, San Romero de América, son 7, ezti-tunil, El canto del desentendido, entre otros…
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;P.D. Tomado del afiche que me envio Erick al correo.
&lt;br /&gt;&lt;/div&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt;
&lt;br /&gt;&lt;p class="MsoNormal" style="margin: 0cm -60.8pt 0.0001pt -63pt; text-align: justify;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:18;color:black;"   &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-7663783585024880664?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/7663783585024880664/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=7663783585024880664" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7663783585024880664?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/7663783585024880664?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/02/invitacion-vigilia-monsenor-romero.html" title="Invitación vigilia Monseñor Romero" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tPLVjrBRifE/SaXZHANd00I/AAAAAAAABhg/-mGhFtHmh9M/s72-c/romero-1.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;D0QAR3cyfip7ImA9WxVWEEU.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-4149983964413405357</id><published>2009-02-19T15:14:00.000-08:00</published><updated>2009-02-19T15:15:46.996-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-19T15:15:46.996-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="elecciones 2009" /><category scheme="http://www.blogger.com/atom/ns#" term="el salvador" /><title>Este blog quiere el cambio</title><content type="html">Se que mas de alguien me va a criticar por este post, pero me vale. Saludos a todos los compas de la UES.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SZ3oBBzkvDI/AAAAAAAABhY/XnT_VXLrGRo/s1600-h/no_voto_por_avila.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 272px; height: 294px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SZ3oBBzkvDI/AAAAAAAABhY/XnT_VXLrGRo/s320/no_voto_por_avila.PNG" alt="" id="BLOGGER_PHOTO_ID_5304651040474577970" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-4149983964413405357?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/4149983964413405357/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=4149983964413405357" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4149983964413405357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/4149983964413405357?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/02/este-blog-quiere-el-cambio.html" title="Este blog quiere el cambio" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SZ3oBBzkvDI/AAAAAAAABhY/XnT_VXLrGRo/s72-c/no_voto_por_avila.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;A0QMSX0zfip7ImA9WxVQE0o.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-318742548647034069</id><published>2009-01-30T21:10:00.001-08:00</published><updated>2009-01-30T21:23:08.386-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T21:23:08.386-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="extension" /><category scheme="http://www.blogger.com/atom/ns#" term="debian" /><category scheme="http://www.blogger.com/atom/ns#" term="español" /><category scheme="http://www.blogger.com/atom/ns#" term="diccionario" /><category scheme="http://www.blogger.com/atom/ns#" term="idioma" /><category scheme="http://www.blogger.com/atom/ns#" term="openoffice 3" /><category scheme="http://www.blogger.com/atom/ns#" term="corrector ortografico" /><category scheme="http://www.blogger.com/atom/ns#" term="openoffice" /><title>Corrector Ortografico en OpenOffice.org 3</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tPLVjrBRifE/SYPddRmxmWI/AAAAAAAABhQ/nM6RspBjesY/s1600-h/oo3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 126px;" src="http://4.bp.blogspot.com/_tPLVjrBRifE/SYPddRmxmWI/AAAAAAAABhQ/nM6RspBjesY/s320/oo3.png" alt="" id="BLOGGER_PHOTO_ID_5297321081729816930" border="0" /&gt;&lt;/a&gt;Desde hace algunos días usando &lt;a href="http://krypto84sv.blogspot.com/search/label/openoffice"&gt;OpenOffice.org&lt;/a&gt; 3 en mi Debian GNU/Linux, tenia la necesidad de utilizar el corrector ortográfico, y para mi sorpresa no funcionaba y la solución a este pequeño percance es instalarse el diccionario de nuestra región como una extensión a través de la siguiente dirección:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://extensions.services.openoffice.org/dictionary" title="http://extensions.services.openoffice.org/dictionary" rel="nofollow"&gt;http://extensions.services.openoffice.org/dictionary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Estando alli debemos buscar el correspondiente de nuestro país en mi caso busque el de El Salvador.&lt;br /&gt;&lt;br /&gt;Luego abro el &lt;a href="http://krypto84sv.blogspot.com/search/label/openoffice"&gt;OpenOffice.org&lt;/a&gt; Writer o cualquier otro y me voya Herramientas &gt; Administrador de extensiones y agrego la extensión (diccionario) que se ha descargado de la dirección anterior, luego de esto cerramos el OpenOffice.org y lo volvemos a abrir y eso es todo para que funcione perfectamente el corrector ortográfico.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-318742548647034069?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/318742548647034069/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=318742548647034069" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/318742548647034069?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/318742548647034069?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/01/corrector-ortografico-en-openofficeorg.html" title="Corrector Ortografico en OpenOffice.org 3" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_tPLVjrBRifE/SYPddRmxmWI/AAAAAAAABhQ/nM6RspBjesY/s72-c/oo3.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;CEQAQHs9fip7ImA9WxVQEE0.&quot;"><id>tag:blogger.com,1999:blog-4234304323727536894.post-3611256042904246488</id><published>2009-01-25T13:25:00.000-08:00</published><updated>2009-01-26T12:39:01.566-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-26T12:39:01.566-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tildes" /><category scheme="http://www.blogger.com/atom/ns#" term="teclado" /><category scheme="http://www.blogger.com/atom/ns#" term="deadkeys" /><category scheme="http://www.blogger.com/atom/ns#" term="kde" /><title>Usando DeadKeys en KDE de forma fácil</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzbij6qJcI/AAAAAAAABhA/jJCIvApM59o/s1600-h/kde_logo_10cm.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 150px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzbij6qJcI/AAAAAAAABhA/jJCIvApM59o/s320/kde_logo_10cm.png" alt="" id="BLOGGER_PHOTO_ID_5295348648684168642" border="0" /&gt;&lt;/a&gt;Leyendo el &lt;a href="http://churropolis.org/"&gt;blog del Churro&lt;/a&gt;, vi una entrada muy útil sobre como &lt;a href="http://churropolis.org/?p=1089"&gt;activar las DeadKeys&lt;/a&gt; para poder usar tildes y la "ñ", me intereso puesto que mi caso es igual al de él, ya que el teclado de mi laptop es en ingles.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Al editar el archivo xorg.conf y reiniciar el sistema no me funcionaba, el problema radica en que yo uso &lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt;KDE&lt;/a&gt; y este es el que gestiona el teclado por encima de xorg, la solución para poder usar tildes y la "ñ" esta usando el Centro de control de&lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt; KDE&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Menú K.&lt;/li&gt;&lt;li&gt;Centro de control.&lt;/li&gt;&lt;li&gt;Regional y accesibilidad.&lt;/li&gt;&lt;li&gt;Disposición del teclado.&lt;/li&gt;&lt;li&gt;Si entre los diseños activos no se encuentra el ingles lo agregamos (US).&lt;/li&gt;&lt;li&gt;Después de estar entre los teclados activos damos clic sobre el y elegimos la opción "variante del diseño", &lt;span style="font-weight: bold;"&gt;intl&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzfJdU_gUI/AAAAAAAABhI/TPKu1ykqX50/s1600-h/control-panel.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 188px;" src="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzfJdU_gUI/AAAAAAAABhI/TPKu1ykqX50/s320/control-panel.png" alt="" id="BLOGGER_PHOTO_ID_5295352615465353538" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;"Adjunto imagen del Centro de control de &lt;a href="http://krypto84sv.blogspot.com/search/label/kde"&gt;KDE&lt;/a&gt; donde se configura"&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Lo interesante de hacerlo de esta forma es que no se tiene que editar ningun archivo de configuración y resulta mas intuitivo para un usuario común.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4234304323727536894-3611256042904246488?l=krypto84sv.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://krypto84sv.blogspot.com/feeds/3611256042904246488/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=4234304323727536894&amp;postID=3611256042904246488" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/3611256042904246488?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4234304323727536894/posts/default/3611256042904246488?v=2" /><link rel="alternate" type="text/html" href="http://krypto84sv.blogspot.com/2009/01/usando-deadkeys-en-kde-de-forma-fcil.html" title="Usando DeadKeys en KDE de forma fácil" /><author><name>Daniel Alberto</name><uri>http://www.blogger.com/profile/04243634599457276349</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14933557959582909154" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tPLVjrBRifE/SXzbij6qJcI/AAAAAAAABhA/jJCIvApM59o/s72-c/kde_logo_10cm.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry></feed>
