Vídeo Aulas: Seam Extras partes 1 a 3

Java, Java EE, Java Server Faces, Jboss Seam, RichFaces, Vídeo Aulas 2 Comments »

Foi publicada no portal Java Magazine as 3 primeiras partes de uma série de vídeo aulas sobre os extras Seam Framework. Esta série abordará alguns recursos interessantes do Seam Framework como Geração de PDFs, Envio de e-mails, Integração com Captcha e Agendamento de Tarefas. Nesta série também procurei demonstrar através de um sistema de cadastro de notícias alguns recursos interessantes do RichFaces como Upload de múltiplos arquivos e auto-completar.

A primeira vídeo aula aborda a criação e configuração da aplicação. É criado o banco de dados, criação dos formulários e aplicado restrições de acesso a pasta dos cadastros de usuários, tags, anexos e notícias.

A segunda parte aborda a criação de uma classe de criptografia MD5, criptografia e validação de senhas no cadastro de usuário e customização da classe de autenticação de usuários usada pelo Seam Framework.

Por fim a terceira parte abordou a implementação do código necessário para fazer upload de arquivos usando o componente do RichFaces rich:fileUpload. No exemplo, foi limitado o tamanho máximo de arquivos, o tipo do arquivo (apenas imagens) e implementado a ação de modo que salvasse a imagem no Banco de Dados usando o Hibernate. Por fim foi apresentado também como pode ser realizado a exibição de imagens usando o a4j:mediaOutput.

As próximas vídeo aulas mostrarei a implementação do recurso de autocompletar, semelhante ao WordPress, e mostrarei também a geração de PDF e Envio de e-mails. Vale a pena conferir!

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 =)

Vídeo Aula Jboss Seam: Seam Gen parte 3

Java, Java EE, Java Server Faces, Jboss Seam, Vídeo Aulas No Comments »

Foi publicada no portal Java Magazine a 10ª vídeo aula da série sobre Seam Framework. Nesta vídeo aula eu mostrei como criar conversores de dados JSF usando anotações do Seam Framework. Esta maneira apresentada não requer a configuração dos conversores no arquivo de configuração do JSF, o faces-config.xml.

Na vídeo aula foram criados dois conversores de dados JSF para as entidades de Produto e Categoria. Estes conversores são usados nos combos de produto (página MovimentEdit.xhtml) e categorias (Página ProductEdit.xhtml). Estes combos recebem listas de SelectItem, métodos criados na parte 9, contendo como valor a instância de produto e categoria. Para finalizar foi criada uma ação para calcular o valor total do movimento.

Esta foi a última vídeo aula da série que introduz os recursos do Seam Framework. Ao logo da série foi abordado a configuração da aplicação, criação de chamadas de ações usando parâmetros, a criação de page actions permitindo fazer o bind de parâmetros GET com propriedades de Managed Beans, criação de URL User Friendly, integração com Spring e por fim a exploração do Seam-Gen.

Espero que tenham gostado. Caso tenha alguma crítica e sugestão serão sempre bem vindas.

Vídeo Aula

Vídeo Aula Jboss Seam: Seam Gen parte 2

Java, Java EE, Java Server Faces, Jboss Seam, RAD, Vídeo Aulas No Comments »

Foi publicada no portal Java Magazine a 9ª vídeo aula da série sobre JBoss Seam. Nesta vídeo aula eu mostrei como pode ser adicionados novos serviços dentro da aplicação gerada pelo Seam-Gen usando o Jboss Developer Studio.

Na vídeo aula foram criados métodos para cálculo de saldo de estoque e métodos para geração dos itens dos combos para Categorias, Produtos e Tipos de Movimentos. Na próxima parte será mostrada a criação de Conversores JSF usando as anotações do Seam. Vale a pena conferir!

Vídeo Aula

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