Dicas JSF 1.2: Não use nome de resource e propriedade de beans iguais. Saiba pq.

Artigos, Hibernate, Java, Java EE, Java Server Faces, Spring, Vídeo Aulas, cinema 2 Comments »

Hoje, durante o trabalho tive um problema bastante interessante. Uma aplicação que estou desenvolvendo, usa JSF 1.2. Estava desenvolvendo um cadastro que tinha uma caixa de seleção, esta caixa de seleção carregava todos os clientes cadastrados. Estou usando os recursos de internacionalização e os recursos de declaração de resource-bundle do JSF 1.2, para centralizar o local onde são declarados os recursos de mensagens. Até aí tudo bem.

Algumas partes foram desenvolvidas usando JSF 1.1, estas partes eu me preocupei ao máximo manter a compatibilidade com o menor número de alterações possível. Antes de ter os recursos de mensagens centralizados, eu não me preocupei em manter um padrão de nomenclatura para os recursos de mensagem, meu grande erro. Conclusão, meu recurso de mensagens para o cadastro de clientes se chamava… tente adivinhar… cliente.

Como a minha humilde caixa de seleção vinculava seu valor a uma propriedade chamada cliente, começaram as dores de cabeça. Eu recebi uma exception não muito amistosa:

19/05/2008 23:06:40 javax.faces.component.UIInput updateModel
SEVERE: /contatos/contato.xhtml @44,46 value=”#{Contato.cliente}”: {0} object is read only base com.marcossousa.app.beans.ContatoBean@123efed property cliente
19/05/2008 23:06:40 com.sun.faces.lifecycle.RenderResponsePhase execute
INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=myform:cliente[severity=(ERROR 2), summary=(/contatos/contato.xhtml @44,46 value="#{Contato.cliente}": {0} object is read only base com.marcossousa.app.beans.ContatoBean@123efed property cliente), detail=(/contatos/contato.xhtml @44,46 value="#{Contato.cliente}": {0} object is read only base com.marcossousa.app.beans.ContatoBean@123efed property cliente)]

Logo que ocorreu o problema fui verificar se o método Set do meu bean estava correto e verifiquei também se o Contato não era nulo. Tudo estava aparentemente correto, pesquisei sobre o assunto no “Oráculo” e não encontrei nenhuma informação relevante. Mais algum tempo de análise verificando se havia alguma correlação, e nada, mas estava chegando perto.

Vendo que eu iria perder muito tempo, tomei uma decisão: vou executar a aplicação usando os códigos fontes do JSF. Coloquei um breakpoint no código que seta os valores nas propriedades dos Managed Beans. Analisei os comportamentos durante cada chamada. Uma coisa não fazia sentido, era verificada a existência de um recurso de mensagens para cada propriedade. Restaurei os códigos fontes também da API para confirmar minhas suspeitas. E realmente e retornava o recurso de mensagens.

Apesar do tempo perdido, foi interessante resolver o problema. Espero que ajude alguém. Recapitulando:


<resource -bundle>
<base -name>com.foo.message</base>
<var>mymessage</var>
</resource>

public class Foo {
private String mymessage;
privates String getMymessage() {
return mymessage;
}
private void setMymessage(String s) {
this.mymessage=s
}
}

E


<h :inputText value="#{foo.mymessage}"/>

Não funciona!

Está aí uma grande vantagem de usar bibliotecas open-source, o problema é complexo, melhor olhar diretos nos fontes! Eu adoro fazer isto =)

Filmagens de “Wolverine” já tem data e local marcados

cinema No Comments »

O jornal australiano The Sydney Mourning Herald anunciou na semana passada que as filmagens de X-Men Origins: Wolverine irão começar em três semanas. Isto é, contando a partir da data de hoje as gravações começam em duas semanas.

O filme, estrelado por Hugh Jackman, faz parte da nova franquia dos X-Men que a 20th Century Fox pretende produzir. Desta vez, os principais mutantes terão filmes solos de seus personagens. O primeiro será Wolverine e já está em pré-produção Magneto.

Produtores de “Resident Evil” confirmam planos para o quarto filme da série

cinema 1 Comment »

Os produtores de Resident Evil, Paul W.S. Anderson e Jeremy Bolt, confirmaram o interesse em dar continuidade à franquia baseada na série de videogame homônima. Há uma chance de a nova aventura girar em torno da personagem Claire Redfield, interpretada pela atriz Ali Larter em Resident Evil 3: A Extinção. Ela é a líder de um grupo de sobreviventes, incumbida de mantê-los livres dos zumbis.

O terceiro filme, que desembarcou no Brasil no mês passado e já foi visto por mais de 800 mil espectadores no país, além de somar bilheteria mundial de mais de US$ 110 milhões. Trata-se da jornada de Alice (Milla Jovovich) e de outros sobreviventes de Raccoon City, saindo do deserto de Nevada, rumo ao Alasca, onde se encontram os últimos humanos.

Fonte: claquete.com

Diretor anuncia estréia antecipada de “Tropa de Elite”

cinema No Comments »

te.jpgA Paramount Pictures, o diretor José Padilha, o produtor Marcos Prado e os atores Wagner Moura, André Ramiro, Caio Junqueira e Fernanda Machado anunciaram nesta terça feira a antecipação da data de lançamento do filme Tropa de Elite para as cidade de São Paulo e Rio de Janeiro para esta sexta-feira (05/10). As demais cidades ficam com a data original (12 de outubro).

 

O filme já havia sido antecipado devido ao alto índice de pirataria de uma cópia inacabada que saiu de um dos estúdios do filme. Anteriormente, o filme estava com lançamento marcado para novembro.

Tropa de Elite chega aos cinemas de todo o Brasil com 140 cópias sendo que muitas delas são em formato digital.

A espectativa é que o filme possa ultrapassar a marca de 5 milhões de espectadores no cinema. Dois Filhos de Francisco, campeão de bilheteria da fase de retomada do cinema nacional, teve público de 5,2 milhões.

WP Theme & Icons by N.Design Studio
Assine Assine os comentarios