<?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" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUAARng7fCp7ImA9WhRUFE8.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541</id><updated>2012-01-24T14:49:07.604-02:00</updated><title>Trechos de códigos</title><subtitle type="html">Trechos de códigos Java e JSF. Blog sobre tudo envolvendo desenvolvimento de software e tecnologia em geral. Dicas sobre Java, JEE, Javascript, Design Patterns, Linux, Unix e muito mais.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://cristianopires.blogspot.com/" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/JsfEMaisUmPouco" /><feedburner:info uri="jsfemaisumpouco" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUAARng_eCp7ImA9WhRUFE8.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-726274862805008887</id><published>2012-01-24T10:43:00.001-02:00</published><updated>2012-01-24T14:49:07.640-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-24T14:49:07.640-02:00</app:edited><title>Detectando quando termina um download</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/726274862805008887/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=726274862805008887" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/726274862805008887?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/726274862805008887?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/VEOebuXuD-I/detectando-quando-termina-um-download.html" title="Detectando quando termina um download" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-t_Gli4-QsLw/Tx7gygWemhI/AAAAAAAACY8/riqawOXhq2g/s72-c/i1.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Brasília - DF, Brasil</georss:featurename><georss:point>-15.7801482 -47.9291698</georss:point><georss:box>-16.2691132 -48.5608838 -15.291183199999999 -47.297455799999994</georss:box><content type="html">Numa aplicação web que fiz às vezes é necessário criar documentos CSV com base em alguma entrada do usuário.


O problema é que o arquivo gerado ficou grande, então o download era demorado. Eu queria mostrar uma tela para o usuário dizendo quando o download iniciou e retirar essa tela quando o download terminar.


O problema: como detectar quando acabou o download e atualizar isso no navegador?


&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MprYEIGew2r7zQ6x91SkdozQOxU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MprYEIGew2r7zQ6x91SkdozQOxU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MprYEIGew2r7zQ6x91SkdozQOxU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MprYEIGew2r7zQ6x91SkdozQOxU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/VEOebuXuD-I" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2012/01/detectando-quando-termina-um-download.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UGSXo5eip7ImA9WhRQGUg.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-4535724522949717619</id><published>2011-12-14T15:14:00.002-02:00</published><updated>2011-12-15T11:20:28.422-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-15T11:20:28.422-02:00</app:edited><title>Como carregar um site externo dentro de um div</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/4535724522949717619/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=4535724522949717619" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/4535724522949717619?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/4535724522949717619?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/GtfxYoQxRbk/como-carregar-um-site-externo-dentro-de.html" title="Como carregar um site externo dentro de um div" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">Tutorial de como inserir uma página externa em um div.
Vou utilizar o método HttpURLConnection do Java. Pro Javascript JQuery.
Vou abrir uma conexão à uma página externa de dentro de um Servlet Java e exibir o resultado em um HttpServletResponse que por fim será exibido em um Div.

Primeiro o arquivo html.
Vou criar um botão que ao ser clicado vai enviar um url pra um método javascript que por 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l9o-4m53E_EDCizs4VadZWTdGEg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l9o-4m53E_EDCizs4VadZWTdGEg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l9o-4m53E_EDCizs4VadZWTdGEg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l9o-4m53E_EDCizs4VadZWTdGEg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/GtfxYoQxRbk" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2011/12/como-carregar-um-site-externo-dentro-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08NRH09fSp7ImA9WhRRF0g.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-2377571816295548533</id><published>2011-11-29T10:56:00.001-02:00</published><updated>2011-12-01T14:11:35.365-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-01T14:11:35.365-02:00</app:edited><title>Utilizando um pool de conexões com hibernate</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/2377571816295548533/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=2377571816295548533" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/2377571816295548533?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/2377571816295548533?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/unz7EZyGQ_8/criando-uma-fabrica-de-conexoes-com.html" title="Utilizando um pool de conexões com hibernate" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">
Parece algo já muito falado na web. Mas o que vou tratar aqui nem todo mundo usa e as vezes sofre com certos tipos de erros.

O caso descrito é o seguinte: 
Tenho um número X de agências bancárias do banco Y. E tenho que controlar as linhas telefônicas do banco.
Cada cidade tem N agências com N telefones cada. E cada agência pode ter posto de auto atendimento em outros locais. Cada posto de auto
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/laOXK-8rcTdD8s7iZHt6qWHkT7s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/laOXK-8rcTdD8s7iZHt6qWHkT7s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/laOXK-8rcTdD8s7iZHt6qWHkT7s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/laOXK-8rcTdD8s7iZHt6qWHkT7s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/unz7EZyGQ_8" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2011/11/criando-uma-fabrica-de-conexoes-com.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEGQXw8eSp7ImA9WhRSFEs.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-8003242424040841441</id><published>2011-11-14T16:50:00.001-02:00</published><updated>2011-11-16T16:37:00.271-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-16T16:37:00.271-02:00</app:edited><title>Criando um arquivo para download</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/8003242424040841441/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=8003242424040841441" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/8003242424040841441?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/8003242424040841441?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/MZmMqtotB9o/criando-um-arquivo-para-download.html" title="Criando um arquivo para download" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">
Tutorial de como criar um arquivo de texto e fazer o download no navegador com JSF.

Vou criar um arquivo do tipo csv. Após ser criado o arquivo será feito o download do mesmo.

Aqui preparo o arquivo o caminho (path), informo o tipo de arquivo (mais opções de tipo de arquivo aqui), crio o arquivo e mando pra download.
Observe que o nome do arquivo é arquivo_ + a data de hoje.
O tipo de arquivo 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/X86CLPNA--EpijH4Z2vE9fgm5xc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X86CLPNA--EpijH4Z2vE9fgm5xc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/X86CLPNA--EpijH4Z2vE9fgm5xc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X86CLPNA--EpijH4Z2vE9fgm5xc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/MZmMqtotB9o" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2011/11/criando-um-arquivo-para-download.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEGQXczeip7ImA9WhRSFUk.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-8562511522945260745</id><published>2011-11-14T14:17:00.000-02:00</published><updated>2011-11-17T14:50:20.982-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T14:50:20.982-02:00</app:edited><title>Exibindo mensagens de requisições ajax</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/8562511522945260745/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=8562511522945260745" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/8562511522945260745?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/8562511522945260745?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/bSk8gaR-zWE/exibindo-mensagens-de-requisicoes-ajax.html" title="Exibindo mensagens de requisições ajax" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">Precisei disso em um formulário onde o usuário seleciona uma operadora de celular e em seguida informa uma data em que a requisição foi feita. O problema é que o usuário poderia esquecer de selecionar a operadora.

A operadora deveria ser selecionada a partir de um combo &amp;lt;h:selectOneMenu 

Nesse caso criei um evento do tipo blur, onde ao perder o foco do campo de data, verificaria se a operadora 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5BPQKGfjw6laxwk8dG_euMnwkuA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5BPQKGfjw6laxwk8dG_euMnwkuA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5BPQKGfjw6laxwk8dG_euMnwkuA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5BPQKGfjw6laxwk8dG_euMnwkuA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/bSk8gaR-zWE" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2011/11/exibindo-mensagens-de-requisicoes-ajax.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkACRXkycCp7ImA9WhRSFUk.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-1435253094536382576</id><published>2011-11-14T14:04:00.000-02:00</published><updated>2011-11-17T14:52:44.798-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T14:52:44.798-02:00</app:edited><title>Como executar o valueChangeListener a cada mudança de item</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/1435253094536382576/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=1435253094536382576" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/1435253094536382576?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/1435253094536382576?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/X5vFAkdtTqY/como-executar-o-valuechangelistener.html" title="Como executar o valueChangeListener a cada mudança de item" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">
No meu caso, o combo exibe uma lista de operadoras de telefone. Ao selecionar eu precisava que fosse executado o valueChangeListener para marcar qual operadora foi selecionada. Segue a dica.

Basta colocar o immediate="true" e incluir a linha &amp;lt;f:ajax event="change"/&amp;gt; 


&amp;lt;h:selectOneMenu id="envioOperadora" value="#{consultaBean.terminal.idContrato.idOperadora}"  



    label="Operadora" 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3x2dwP0_3IkNwjSakbHqz2oGuK4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3x2dwP0_3IkNwjSakbHqz2oGuK4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3x2dwP0_3IkNwjSakbHqz2oGuK4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3x2dwP0_3IkNwjSakbHqz2oGuK4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/X5vFAkdtTqY" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2011/11/como-executar-o-valuechangelistener.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUENR3Y4eCp7ImA9WhdSGUs.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-3237709441955109888</id><published>2011-07-29T16:08:00.000-03:00</published><updated>2011-07-29T16:28:16.830-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-29T16:28:16.830-03:00</app:edited><title>Como controlar horário de acesso à internet no linux</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/3237709441955109888/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=3237709441955109888" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/3237709441955109888?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/3237709441955109888?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/ZovlII0C9xs/como-controlar-horario-de-acesso.html" title="Como controlar horário de acesso à internet no linux" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">Um jeitinho de parar o serviço de internet sem ter que instalar programas de terceiros.

Primeiro crie um script. Aqui eu chamei de timeControl:

vi /diretorio/timeControl

#!/bin/bash

HOUR=$(date '+%k')
MIN=$(date '+%M')

if [ $HOUR -gt 22 ]; then 
if [ $MIN -gt 33 ]; then 
ifconfig eth0 down
fi      
fi 

Salve e feche o arquivo. Observe que eu deixei a hora limite para 22:33
Faça o arquivo 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nM5Fvj1-KKU04TmNnG1ZAoX_1AE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nM5Fvj1-KKU04TmNnG1ZAoX_1AE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nM5Fvj1-KKU04TmNnG1ZAoX_1AE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nM5Fvj1-KKU04TmNnG1ZAoX_1AE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/ZovlII0C9xs" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2011/07/como-controlar-horario-de-acesso.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEESHw7eip7ImA9WhdSGUs.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-3209798863370732857</id><published>2011-07-29T15:36:00.000-03:00</published><updated>2011-07-29T15:36:49.202-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-29T15:36:49.202-03:00</app:edited><title>Luta dos profissionais de TI por melhores condições em Brasília</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/3209798863370732857/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=3209798863370732857" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/3209798863370732857?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/3209798863370732857?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/xJMgjQ7OBP8/luta-dos-profissionais-de-ti-por.html" title="Luta dos profissionais de TI por melhores condições em Brasília" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-TATgUz84Sbo/TjL8n2ZhSBI/AAAAAAAABhQ/sepnDabxcFk/s72-c/28072011283.jpg" height="72" width="72" /><thr:total>0</thr:total><content type="html">Finalmente parece que o pessoal de TI do DF resolveu se movimentar. Ontem teve uma assembléia com os profissionais, sem a presença do sindicato (apesar que tinha olheiros deles lá) e foi definido que para a negociação desse ano o SINDPD-DF não nos representa mais! Foi montado a COMISSÃO DE NEGOCIAÇÃO, que será a responsável por negociar direto com o SINDSEI, sem a presença do SINDPD. Tinha cerca 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kmqF75xNzxshEwTJqJxE1wOderE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kmqF75xNzxshEwTJqJxE1wOderE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kmqF75xNzxshEwTJqJxE1wOderE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kmqF75xNzxshEwTJqJxE1wOderE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/xJMgjQ7OBP8" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2011/07/luta-dos-profissionais-de-ti-por.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUACQXo8fyp7ImA9WxFXGUU.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-564891294101247759</id><published>2010-03-03T16:22:00.000-03:00</published><updated>2010-05-27T15:09:20.477-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-27T15:09:20.477-03:00</app:edited><title>Como colocar um radio box em um data table.</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/564891294101247759/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=564891294101247759" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/564891294101247759?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/564891294101247759?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/cXt_dyZxjW4/como-colocar-radiobuttom-em-um-data.html" title="Como colocar um radio box em um data table." /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">
    &amp;lt;!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }--&amp;gt;
  


Esse recurso é do Myfaces Tomahawk. É necessário tê-lo instalado na aplicação.

No bean:
       

public void processRowSelection(ValueChangeEvent event) {

     selectedRowIndex = (Long) event.getNewValue();
  
     for (Cidade c : listaCidade) {
     if (selectedRowIndex == c.getIdCidade()) {
     // aqui
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yOQwJrx846wdiouj8IqsFTrO5f0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yOQwJrx846wdiouj8IqsFTrO5f0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yOQwJrx846wdiouj8IqsFTrO5f0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yOQwJrx846wdiouj8IqsFTrO5f0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/cXt_dyZxjW4" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2010/03/como-colocar-radiobuttom-em-um-data.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAERnw5fip7ImA9WhRXEEk.&quot;"><id>tag:blogger.com,1999:blog-3722319681226289541.post-8830270095432963425</id><published>2010-01-13T15:29:00.000-02:00</published><updated>2011-12-16T12:45:07.226-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-16T12:45:07.226-02:00</app:edited><title>Popup em JSF sem Javascript</title><link rel="replies" type="application/atom+xml" href="http://cristianopires.blogspot.com/feeds/8830270095432963425/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=3722319681226289541&amp;postID=8830270095432963425" title="5 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/8830270095432963425?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3722319681226289541/posts/default/8830270095432963425?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JsfEMaisUmPouco/~3/U92PkAqvAZw/popup-em-jsf-sem-javascript.html" title="Popup em JSF sem Javascript" /><author><name>Cristiano Pires</name><uri>https://profiles.google.com/107113288292245152500</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-prPLFeaf66I/AAAAAAAAAAI/AAAAAAAACNE/C0_icuDdFWU/s512-c/photo.jpg" /></author><thr:total>5</thr:total><content type="html">
    &amp;lt;!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }--&amp;gt;
  

Tutorial de como fazer um popup sem escrever código javascript na página.
Vou explicar 2 meios de criar popup. Um atualizando o javascript dinamicamente e outro com myfaces.
Nesse tutorial, a lógica é criar um arquivo de script dinâmico, que vou chamar de dynamicScript.js. Vou incluir o método do popup nele 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dUQlkeGDGR2toLpOF44BL-g1P90/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dUQlkeGDGR2toLpOF44BL-g1P90/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dUQlkeGDGR2toLpOF44BL-g1P90/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dUQlkeGDGR2toLpOF44BL-g1P90/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JsfEMaisUmPouco/~4/U92PkAqvAZw" height="1" width="1"/&gt;</content><feedburner:origLink>http://cristianopires.blogspot.com/2010/01/popup-em-jsf-sem-javascript.html</feedburner:origLink></entry></feed>

