<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Roberto Furutani &#187; jsf</title>
	<atom:link href="http://www.furutani.com.br/tag/jsf/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.furutani.com.br</link>
	<description>O site de um computólogo curioso!</description>
	<lastBuildDate>Fri, 20 Jan 2012 00:25:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Problema com Mojarra 2.0.4 e PhaseListener</title>
		<link>http://www.furutani.com.br/2011/02/problema-com-mojarra-2-0-4-e-phaselistener/</link>
		<comments>http://www.furutani.com.br/2011/02/problema-com-mojarra-2-0-4-e-phaselistener/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 10:54:05 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=719</guid>
		<description><![CDATA[Olá, Esse post é apenas um lembrete meu, mas pode ajudar outras pessoas ;-) No Mojarra 2.0.4 (acredito que este problema venha desde da 2.0.0) quando você implementa seu javax.faces.event.PhaseListener no método beforePhase() o método FacesContext.getViewRoot() retorna null. Isto impossibilita a uma verificação que eu precisava fazer no código abaixo. Para contornar o problema joguei o [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Esse post é apenas um lembrete meu, mas pode ajudar outras pessoas  ;-)</p>
<p>No <strong>Mojarra 2.0.4</strong> (acredito que este problema venha desde da 2.0.0) quando você implementa seu <em><strong>javax.faces.event.PhaseListener</strong></em> no método <strong>beforePhase()</strong> o método <em><strong>FacesContext.getViewRoot()</strong></em> retorna null. Isto impossibilita a uma verificação que eu precisava fazer no código abaixo.<br />
Para contornar o problema joguei o código para o método <strong>afterPhase()</strong>, pois lá o <strong>getViewRoot()</strong> não vem nulo.<br />
Não sei se isso ocorre com outras implementações do JSF 2 como o MyFaces e nem sei se é proposital ou é se um bug.</p>
<pre class="brush: java">
public void beforePhase(PhaseEvent evt) {
	PhaseId phaseId = evt.getPhaseId();
	FacesContext ctx = evt.getFacesContext();
	String viewId = ctx.getViewRoot().getViewId();

	if(PhaseId.RESTORE_VIEW.equals(phaseId)){
		// Verificação simples de autorização de acesso
		// Caso usuario não estiver na sessão, redireciona para o login
		// Unica pagina livre é o que tem  login na identificação da view
		HttpSession session = (HttpSession) ctx.getExternalContext().getSession(true);
		Object usuario = session.getAttribute(CrmGlobals.USUARIO_AUTENT);

		try {

			if(!(viewId.indexOf(&quot;login&quot;) &gt; 0) &amp;&amp; usuario == null){
				FacesContext.getCurrentInstance().getExternalContext().redirect(&quot;/crm/login/login.jsf&quot;);
			}

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
</pre>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2011/02/problema-com-mojarra-2-0-4-e-phaselistener/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RichFaces &#8211; fileUpload component</title>
		<link>http://www.furutani.com.br/2009/11/richfaces-fileupload-component/</link>
		<comments>http://www.furutani.com.br/2009/11/richfaces-fileupload-component/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:46:48 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=578</guid>
		<description><![CDATA[Olá Para quem precisava de um componente de upload em JSF o RichFaces disponibiliza um ótimo. Tem suporte a seleção de multíplos arquivos para upload com a utilização de flash. Clique aqui para experimentar a demonstração do componente. Até mais, Roberto]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Para quem precisava de um componente de upload em JSF o RichFaces disponibiliza um ótimo. Tem suporte a seleção de multíplos arquivos para upload com a utilização de flash.</p>
<p><a href="http://livedemo.exadel.com/richfaces-demo/richfaces/fileUpload.jsf;jsessionid=5478DC09E733AF26F8C18BFBC9D8823A?c=fileUpload&amp;tab=usage">Clique aqui para experimentar a demonstração do componente.</a></p>
<p>Até mais,</p>
<p>Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/11/richfaces-fileupload-component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Versão final do JSF 2.0</title>
		<link>http://www.furutani.com.br/2009/10/versao-final-do-jsf-2-0/</link>
		<comments>http://www.furutani.com.br/2009/10/versao-final-do-jsf-2-0/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 23:58:51 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=551</guid>
		<description><![CDATA[Olá! O Gilliard Cordeiro publicou um post que me deixou felix :) Mojarra (JSF RI) 2.0 disponível No blog dele tem muitos exemplos usando JSF 2.0, vale a pena conferir. Site oficial do projeto.]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>O Gilliard Cordeiro publicou um post que me deixou felix :)<br />
<a href="http://blog.gilliard.eti.br/2009/10/mojarra-jsf-ri-2-0-disponivel/">Mojarra (JSF RI) 2.0 disponível</a><br />
No blog dele tem muitos exemplos usando JSF 2.0, vale a pena conferir.</p>
<p><a href="https://javaserverfaces.dev.java.net/">Site oficial do projeto.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/10/versao-final-do-jsf-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Construindo menu dinamicamente com RichFaces</title>
		<link>http://www.furutani.com.br/2009/05/construindo-menu-dinamicamente-com-richfaces/</link>
		<comments>http://www.furutani.com.br/2009/05/construindo-menu-dinamicamente-com-richfaces/#comments</comments>
		<pubDate>Sun, 31 May 2009 15:32:43 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=443</guid>
		<description><![CDATA[Olá Irei mostrar neste post como montar um menu usando código Java e não a taglib do Rich Faces. Normalmente fariamos assim: &#60;rich:dropDownMenu&#62; &#60;rich:menuItem submitMode=&#34;server&#34; onclick=&#34;document.location.href=&#039;index.jsf&#039;&#34;&#62; &#60;h:outputText value=&#34;Blue Sky&#34;/&#62; &#60;a4j:actionparam name=&#34;menu&#34; value=&#34;blueSky&#34; assignTo=&#34;#{MenuMB.skin}&#34;/&#62; &#60;/rich:menuItem&#62; &#60;rich:menuItem submitMode=&#34;server&#34; onclick=&#34;document.location.href=&#039;index.jsf&#039;&#34;&#62; &#60;h:outputText value=&#34;Japan Cherry&#34;/&#62; &#60;a4j:actionparam name=&#34;menu&#34; value=&#34;japanCherry&#34; assignTo=&#34;#{MenuMB.skin}&#34;/&#62; &#60;/rich:menuItem&#62; &#60;rich:menuItem submitMode=&#34;server&#34; onclick=&#34;document.location.href=&#039;index.jsf&#039;&#34;&#62; &#60;h:outputText value=&#34;Deep Marine&#34;/&#62; &#60;a4j:actionparam name=&#34;menu&#34; value=&#34;deepMarine&#34; assignTo=&#34;#{MenuMB.skin}&#34;/&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Olá  Irei mostrar neste post como montar um menu usando código Java e não a taglib do Rich Faces. Normalmente fariamos assim:</p>
<pre class="brush: html">
&lt;rich:dropDownMenu&gt;
&lt;rich:menuItem submitMode=&quot;server&quot; onclick=&quot;document.location.href=&#039;index.jsf&#039;&quot;&gt;
&lt;h:outputText value=&quot;Blue Sky&quot;/&gt;
&lt;a4j:actionparam name=&quot;menu&quot; value=&quot;blueSky&quot; assignTo=&quot;#{MenuMB.skin}&quot;/&gt;
&lt;/rich:menuItem&gt;
&lt;rich:menuItem submitMode=&quot;server&quot;  onclick=&quot;document.location.href=&#039;index.jsf&#039;&quot;&gt;
&lt;h:outputText value=&quot;Japan Cherry&quot;/&gt;
&lt;a4j:actionparam name=&quot;menu&quot; value=&quot;japanCherry&quot; assignTo=&quot;#{MenuMB.skin}&quot;/&gt;
&lt;/rich:menuItem&gt;
&lt;rich:menuItem submitMode=&quot;server&quot;  onclick=&quot;document.location.href=&#039;index.jsf&#039;&quot;&gt;
&lt;h:outputText value=&quot;Deep Marine&quot;/&gt;
&lt;a4j:actionparam name=&quot;menu&quot; value=&quot;deepMarine&quot; assignTo=&quot;#{MenuMB.skin}&quot;/&gt;
&lt;/rich:menuItem&gt;
&lt;/rich:dropDownMenu&gt;
</pre>
<p>Para criar os itens do menu dinamicamente usando uma consulta no banco de dados por exemplo fariamos assim:<br />
[sourcecode language="java" smarttabs="true" 1="&lt;/code&gt;&lt;code&gt;collapse=&quot;true&quot;" 2="&lt;/code&gt;&lt;code&gt;"]&lt;/code&gt;public void atualizaGrupo(){<br />
menuGrupos = new HtmlMenuGroup();<br />
menuGrupos.setLabelClass(&quot;Menu de Skins&quot;);</p>
<p>List &lt;Menu&gt;novaLista = MenuDAO.getInstance().buscarMenus();<br />
//<br />
for (Menu menu : novaLista) {<br />
HtmlMenuItem novoMenu = new HtmlMenuItem();</p>
<p>FacesContext context = FacesContext.getCurrentInstance();<br />
ELContext elContext = context.getELContext();<br />
Application app = context.getApplication();<br />
ExpressionFactory expressionFactory = app.getExpressionFactory();<br />
//<br />
MethodExpression me = expressionFactory.createMethodExpression(<br />
context.getELContext(),<br />
&quot;#{MenuMB.exibirMenuSelecionado}&quot;, String.class, new Class[] {});</p>
<p>novoMenu.setActionExpression(me);<br />
novoMenu.setValue(menu.getDescricao());</p>
<p>// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>HtmlActionParameter htmlparam = new HtmlActionParameter();<br />
ValueExpression valueExpression = expressionFactory.createValueExpression(elContext, &quot;#{MenuMB.skin}&quot;, String.class);<br />
htmlparam.setAssignToBinding(valueExpression);<br />
htmlparam.setName(&quot;menuGrupo&quot;);<br />
htmlparam.setValue(menu.getDescricao());<br />
novoMenu.addActionListener(htmlparam);<br />
novoMenu.setOnclick(&quot;document.location.href=&#8217;index.jsf&#8217;&quot;);<br />
//<br />
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>novoMenu.getChildren().add(htmlparam);<br />
menuGrupos.getChildren().add(novoMenu);<br />
}<br />
}&lt;code&gt;[/sourcecode]<br />
O método exibirMenuSelecionado() é usado apenas para exibir no console o valor do atributo skin.</p>
<pre class="brush: java">public void exibirMenuSelecionado(){
System.out.println(&quot; Valor de this.skin: &quot;+ this.skin);
}</pre>
<p>No XHTML precisamos desse pequeno código.</p>
<pre class="brush: html">&lt;rich:menuGroup  binding=&quot;#{MenuMB.menuGrupos}&quot;&gt;&lt;/rich:menuGroup&gt;</pre>
<p>No managed bean é necessário colocar os atributos</p>
<pre class="brush: java">private HtmlMenuGroup menuGrupos;
private String skin;</pre>
<p>Estou usando a versão 3.2.2.GA. Até mais, Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/05/construindo-menu-dinamicamente-com-richfaces/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Novidades no JSF 2.0</title>
		<link>http://www.furutani.com.br/2009/05/novidades-no-jsf-20/</link>
		<comments>http://www.furutani.com.br/2009/05/novidades-no-jsf-20/#comments</comments>
		<pubDate>Thu, 28 May 2009 16:14:28 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=439</guid>
		<description><![CDATA[Olá! A especificação do JSF 2.0 está em fase final e já exite uma implementação beta dessa especificação. Abaixo links interessantes sobre o JSF 2.0. Jim Driscoll&#8217;s Blog URLs amigáveis no JSF 2.0 Espiando o JSF 2.0 Até mais, Roberto]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>A especificação do JSF 2.0 está em fase final e já exite uma implementação beta dessa especificação.<br />
Abaixo links interessantes sobre o JSF 2.0.</p>
<h2><span style="font-size: small;"><a href="http://weblogs.java.net/blog/driscoll/" target="_blank">Jim Driscoll&#8217;s Blog</a></span></h2>
<h2><span style="font-size: small;"><a title="Permanent Link to URLs amigáveis no JSF 2.0" rel="bookmark" href="http://blog.gilliard.eti.br/2009/05/urls-amigaveis-no-jsf-2/">URLs amigáveis no JSF 2.0</a></span></h2>
<h2><span style="font-size: small;"><a href="http://fernandofranzini.wordpress.com/2009/05/28/espiando-o-jsf-2-0/">Espiando o JSF 2.0</a></span></h2>
<p>Até mais,</p>
<p>Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/05/novidades-no-jsf-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSF (JavaServer Faces) &#8211; Exception Handler</title>
		<link>http://www.furutani.com.br/2008/08/jsf-javaserver-faces-exception-handler/</link>
		<comments>http://www.furutani.com.br/2008/08/jsf-javaserver-faces-exception-handler/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 22:02:47 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Post Antigos]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://www.furutani.eti.br/wordpress/?p=32</guid>
		<description><![CDATA[Olá! Infelizmente o tratamento de exceções no JSF (JavaServer Faces) não é tão fácil quanto no Struts, enquanto no Struts o tratamento é feito de forma declarativa no struts-config.xml(eu acho mais fácil tratar dessa forma), no JSF é programático, ou seja você escreve o código que trata a exception para mostrar a mensagem correta na [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Infelizmente o tratamento de exceções no <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">JSF (JavaServer Faces)</a> não é tão fácil quanto no <a href="http://struts.apache.org/1.3.8/index.html">Struts</a>, enquanto no Struts o tratamento é feito de forma declarativa no struts-config.xml(eu acho mais fácil tratar dessa forma), no JSF é programático, ou seja você escreve o código que trata a exception para mostrar a mensagem correta na página. Geralmente isso é feito diretamente no Managed Bean usando blocos try&#8230;catch.</p>
<p>Quando você espera uma exception é intuitivo colocar um bloco try..catch e escrever o código para mostrar uma mensagem na página. Mas e se der um NullpointerException ou alguma outra RuntimeException?</p>
<p>Tratar essas exceptions no JSF de forma genérica não é fácil. Eu consegui fazer isso criando uma classe herdando de ActionListenerImpl, sobreescrevendo o método processAction e incluindo uma chamada ao método processAction() da classe pai dentro de um bloco try&#8230;catch. Dentro desse catch é feito um addMessage() com a mensagem a ser mostrada e também é feito o redirecionamento para a página de erro.</p>
<p>Outro problema é que o FacesMessage não suporta a internacionalização de mensagens, por isso foi criada a I18nFacesMessage que implementa esse recurso.</p>
<p>O exemplo do <a href="http://www.furutani.com.br/a/JSFException.zip">JSF (JavaServer Faces) &#8211; Exception Handler pode baixado clicando aqui.</a></p>
<p>Esse projeto foi feito no Eclipse 3.3 Europa, basta utilizar o recurso de import dele para poder rodar ele.</p>
<p>Utilize o Tomcat 6.0.16.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2008/08/jsf-javaserver-faces-exception-handler/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Aprendendo JSF</title>
		<link>http://www.furutani.com.br/2008/08/aprendendo-jsf/</link>
		<comments>http://www.furutani.com.br/2008/08/aprendendo-jsf/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 21:58:50 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Post Antigos]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://www.furutani.eti.br/wordpress/?p=24</guid>
		<description><![CDATA[Olá Após muito tempo sem postar, estou de volta para contar que eu estava aprendendo JSF (JavaServer Faces) utilizando a implementação MyFaces. Achei muito interessante o esquema de eventos e listeners, ficou parecido com ASP.NET (não sei se isso é bom ou ruim), pra quem estava acostumado com as actions do Struts é uma novidade [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Após muito tempo sem postar, estou de volta para contar que eu estava aprendendo JSF (JavaServer Faces) utilizando a implementação MyFaces. Achei muito interessante o esquema de eventos e listeners, ficou parecido com ASP.NET (não sei se isso é bom ou ruim), pra quem estava acostumado com as actions do Struts é uma novidade e tanto. A qualidade e a quantidade de componentes visuais impressiona, no MyFaces é possivel encontrar vários que já utilizam AJAX. Mas o componente que mais me deixou impressionado é esse <a href="http://today.java.net/pub/a/today/2006/02/09/file-uploads-with-ajax-and-jsf.html">aqui</a> para fazer upload de arquivo.</p>
<p>O JSF também faz parte da especificação do <a href="http://java.sun.com/javaee/5/docs/tutorial/doc/">Java EE 5</a> assim como o JSP e o EJB 3, ao contrário do Struts.</p>
<p>Gostei muito dele e espero ter mais tempo pra brincar com os validators e converters.</p>
<p>O arquivo com o mini projeto pode ser baixado <a href="http://www.furutani.com.br/files/?did=28">aqui</a>.  Foi feito com o Eclipse, JBoss 4.x e o MySQL. Aproveite e coloquei o Hibernate 3 na parada.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2008/08/aprendendo-jsf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

