Struts - Form-Beans x ActionForms

Olá! :lol:

Bom, eu estudei a apostila de struts da Caelum, e lá existe um exemplo de como deve ser criada uma ActionForm

package br.com.caelum.struts.form;
import org.apache.struts.action.*;

public class ContatoForm extends ActionForm {
   private Contato contato = new Contato();

    public Contato getContato() {
      return this.contato;
    }
}

Mapeando...

<formbeans>
   <formbean name="ContatoForm" type="br.com.caelum.struts.form.ContatoForm"/>
</formbeans>

recuperando Valores...

<html:form action="/novoContato" focus="contato.nome">
}

Porém, ao ler um tutorial muito indicado, “tirando o máximo de struts”, o autor deixa claro que uma das boas práticas em se usar o framework struts é justamente “não criar classes java para os form-beans”, sendo somente necessário mapear o ActionForm usando uma DynaValidatorForm.

Então, gostaria da opnião dos mais experientes. Qual é a melhor maneira?

[]'s :wink:

o correto seria DynaActionForm.
da uma olhada neste link:

http://struts.apache.org/1.3.8/userGuide/building_controller.html#dyna_action_form_classes

E na minha opinião é bem melhor utilizar esta abordagem.
Um outro ponto interessante seria voce dar uma olhada em DispatchAction.
aqui tem um exemplo de como utilizar:

http://www.roseindia.net/struts/struts-dispatch-action.shtml

[]s

Alguém tem + alguma dica :?:

Se não me engano o DynaActionForm tem problemas com upload de arquivos :slight_smile:

A melhor abordagem que vi ao se utilizar Struts 1.x é algo semelhante ao que ocorre com JSF e seus managed beans, ou seja, você fica com uma classe que representa seu Action+ActionForm. É muito mais simples e produtiva, seu controller é praticamente um managed bean. Além do mais fica bem mais fácil caso futuramente se pretenda migrar para JSF :slight_smile:

O exemplo petshop do iBatis tem o exemplo com essa abordagem, muito bacana mesmo. Eu o utilizei e adaptei algumas coisas para minhas necessidades, como o esquema de validação (commons-validator) por exemplo, ficou muito bom.

Utilizar Struts da forma convencional é trabalhoso demais.
Vale a pena dá uma olhada.