Visualizando o Struts: Detalhes do View com o Framework da Apache
Aprenda a trabalhar com a parte mais visível das aplicações Struts: taglibs, ActionForms e DynaActionForms, validação e internacionalização.
Esse artigo faz parte da revista Java Magazine edição 19. Clique aqui para ler todos os artigos desta edição
Clique aqui para ler esse artigo em PDF.
Visualizando o Struts
Detalhes do View com o Framework da Apache
Aprenda a trabalhar com a parte mais visível das aplicações Struts: taglibs, ActionForms e DynaActionForms, validação e internacionalização
Entre as mais importantes e úteis funcionalidades do Struts estão a coleta e a validação de dados postados via formulários HTML, além do redirecionamento do processamento (que geralmente é baseado na verificação desses dados). Neste artigo, vamos falar sobre a camada View no Struts, o "V" da arquitetura MVC, abordando taglibs, mensagens, ActionForms, DynaActionForms, internacionalização e alternativas de validação.
Componentes do View
Em aplicações Struts, a camada View pode ser composta de páginas HTML, imagens e arquivos multimídia, páginas JSP (usando ou não taglibs do Struts), ActionForms, que recebem e disponibilizam os dados de formulário para processamento, e, indiretamente, de arquivos de propriedades, onde são configurados textos a serem exibidos pela aplicação. Na camada View podem também ser usados mecanismos de templates como o Tiles, que é parte do framework, ou o Jakarta Velocity, entre outras técnicas e tecnologias. Aqui focaremos em páginas JSP e nas tecnologias oferecidas nativamente pelo Struts.
Taglibs do Struts
São fornecidas cinco bibliotecas com o Struts: HTML, com tags para criação de páginas dinâmicas e formulários; Beans para acesso a JavaBeans e suporte a internacionalização; Logic, com tags para loops e execução condicional; Tiles para a utilização do mecanismo de templates embutido; e Nested, para a manipulação de estruturas hierarquizadas de beans.Veja na Listagem 1 um exemplo de formulário utilizando algumas dessas taglibs. Observe no código a declaração das taglibs com a diretiva <%@ taglib uri="URI” prefix=”prefixo”> e a definição dos campos utilizando <html:tipo>. A Figura 1 mostra a tela resultante.
Nota: O uso de taglibs, tecnicamente, não é obrigatório nas páginas JSP de aplicações Struts, porém sua utilização facilita muito o desenvolvimento, permitindo tirar proveito dos recursos automáticos do framework, como preenchimento e validação de campos de formulário.
Prefira a JSTL
As bibliotecas de tags do Struts surgiram antes da padronização da JSTL (JSP Standard Tag Library). Várias têm praticamente as mesmas funcionalidades, e a recomendação é utilizar as tags equivalentes da JSTL no lugar das taglibs Logic e Bean do Struts. Veja na Listagem 2 um exemplo de página JSP com as tags Logic e na Listagem 3 o código equivalente usando a JSTL. A Figura 2 apresenta a tela resultante.
A JSTL foi discutida em detalhes na coluna "Pente Fino", nas Edições 7, 8 e 9. Veja também a coluna "Java Livre" nesta edição, que demonstra a uso da JSTL em uma aplicação web (mas sem uso do Struts).
Mensagens e internacionalização
Quantas vezes você precisou alterar dezenas de páginas porque uma mensagem ou um nome de botão comum foi modificado? Pois bem, com o Struts pode-se definir num único local (no arquivo ApplicationResources.properties) as mensagens de erros e os valores exibidos em botões, textos em HTML e outros componentes visuais. E não é necessária a recompilação para que as mudanças passem a valer.
O ApplicationResources.properties é usado também para internacionalização através das classes Locale e ResourceBundle (veja o quadro "i18n e Java"). Esse arquivo pode ter qualquer nome, mas a extensão .properties é obrigatória. Deve ser criada uma versão para cada idioma, além do default. Suponha que usemos o prefixo padrão "ApplicationResources", então o arquivo com as mensagens default deve chamar-se ApplicationResources.properties e conter as mensagens no idioma default do servidor. Para mensagens em outros idiomas o arquivo deve ter o nome ApplicationResources_xx.properties, onde xx é o código ISO para o idioma. Por exemplo podemos ter ApplicationResources.properties com mensagens em inglês e ApplicationResources_fr.properties com mensagens em francês. É possível também especificar o país, tratando variantes de idiomas como pt_BR para o português do Brasil.
Dessa forma, poderíamos ter um arquivo ApplicationResources.properties com o seguinte conteúdo:
pagina.titulo=Welcome to SouJava!
label.user=User
label.password=Password
E um arquivo ApplicationResources_pt_BR.properties com as mensagens correspondentes para o Brasil:
pagina.titulo= Bem-vindo ao SouJava!
label.user=Usuário
label.password=Senha
Veja dois JSPs simples demonstrando a internacionalização na Listagem 4 e um exemplo de " [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo