Dicas para Struts 1.x

Como ainda vejo muitos desenvolvedores que utilizam de alguma forma o framework Struts 1.x em projetos pessoais ou profissionais, ou desenvolvedores que estão aprendendo Java e optam por aprender Struts. Resolvi deixar algumas dicas quem podem ajudar o desenvolvimento de aplicações que utilizam este framework.

Essas dicas não são novas e muito menos revolucionárias, até porque este framework já cumpriu o seu papel e hoje em dia já existem inúmeros outros framework que funcionam ou melhor ou de forma equivalente ao Struts 1.x!

Iniciando as dicas:

  1. Vou começar indicando o uso de DynaActionForm em substituição ao ActionForm, imagine ter uma classe Java para cada formulário de seu projeto? Teríamos inúmeras classes java que podem ser substituídas por mapeamento XML do formulário no arquivo de configuração do struts, o struts-config.xml.Exemplo de um formulário configurado no struts-config.xml utilizando DynaActionForm:
    1
    2
    3
    4
    5
    <form -bean name="UsuarioForm" type="org.apache.struts.action.DynaActionForm">
      <form -property name="Nome" type="java.lang.String"/>
      <form -property name="Login" type="java.lang.String"/>
      <form -property name="Senha" type="java.lang.String"/>
    </form>
    
  2. Uma outra dica para economizar classes em java é ao invés de estender suas Actions da classe Action e assim ter uma classe para cada ação executada, estender da classe DispatchAction, assim pode-se utilizar mais de uma ação dentro de uma classe java.Classes Java estendendo de Action:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //arquivo  MinhaAction1.java
    public class IncluirUsuario extends Action {
    
      public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,                          HttpServletResponse response) throws Exception {
        // conteudo da action
        return mapping.findForward("listaUsuario");
      }
    }
    
    //arquivo  MinhaAction2.java
    public class AlterarUsuario extends Action {
    
      public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,                          HttpServletResponse response) throws Exception {
        // conteudo da action
        return mapping.findForward("listaUsuario");
      }
    }
    
    Agora uma classe Java estendendo de DispatchAction e contendo as mesmas duas ações:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Usuario extends DispatchAction {
    
      public ActionForward incluir(ActionMapping mapping, ActionForm form, HttpServletRequest request,                          HttpServletResponse response) throws Exception {
        // conteudo da action
        return mapping.findForward("listaUsuario");
    }
    
      public ActionForward alterar(ActionMapping mapping, ActionForm form, HttpServletRequest request,                          HttpServletResponse response) throws Exception {
        // conteudo da action
        return mapping.findForward("listaUsuario");
      }
    }
    
  3. Para colocar o foco em seu input quando o formulário carrega é bem simples basta fazer o seguinte:
    1
    2
    3
    <html :form action="UsuarioAcion" focus="Nome">
      <html :text property="Nome"/>
    </html>
    
  4. Precisa limpar os dados de seu DynaActionForm ou DynaValidatorForm? Simples faça assim dentro de sua Action:
    1
    2
      DynaActionForm formulario = (DynaActionForm) form;
      formulario.getMap().clear();
    
  5. Deixarei um alguns links interessantes de como utilizar a validação server-side do próprio Struts, como utilizar Tiles em conjunto com Struts para compor seu layout de páginas entre outras dicas. Documentação do Struts. Struts Validator Framework. Developing Simple Struts Tiles Application.

comments powered by Disqus