Ouvindo falar (e falar bem) sobre o WebWork e ainda mais com o artigo que o Smota publicou, resolvi estudá-lo, mas ainda assim estou apanhando para efetuar alguns comportamentos básicos no dia a dia de um sistema.
Vou descrever um cenário básico, no qual eu gostaria de implementá-lo no WW2.
Seria um Cadastro de Cidade
:arrow: Crio uma classe Bean, com os atribuos id,nome,uf, crio os métodos setters e getters e um construtor default.
:arrow: Crio um arquivo .JSP, na qual será a interface com o usuário, ele terá um form em HTML, no qual irá chamar uma Action para cadastro.
:arrow: dentro do xwork.xml eu crio a tag da action, e direiciono essa tag para meu Bean.
:arrow: o Sistema deve validar os dados digitados pelo usuário, sendo o ID e o nome da cidade obrigátorios. Isso quem será responsável é o validation do WW2.
:arrow: Caso houve validação, preencher os dados dentro da minha classe bean Cidade, e essa classe deverá ser jogada para o Hibernate gravar essas informações no banco de dados, usando o método Save da classe DAO.
É isso ae, o que eu pensei em fazer foi o seguinte.
Dentro do meu form, chamar por exemplo uma action chamada
cadastroCidade.action.
Essa tag está mapeada no arquivo xwork.xml assim;
<action class="br.com.teste.models.Cidade" name="cadastroCidade">
<interceptor-ref name="defaultStack"/>
<result name="success">sucesso.jsp</result>
<result name="input">clientes.jsp</result>
</action>
ou seja, está chamando o meu bean Cidade. O WW irá validar ele (se tiver o aruqivo de validation) e depois irá preencher os atributos, até ae sem problemas.
Agora seguem as dúvidas
:arrow: Meu Objetivo é, depois de ter o bean preenchido, eu irei jogar ele dentro do Hibernate através do DAO.save, eu irei ter que fazer isso dentro do método execute() (dentro do Bean), que é um método overriding da ActionSupport? Ou existe outro meio de eu recuperar esse Bean dentro de outro servlet?
Porque se eu for ter que implementar isso dentro do método execute de cada bean, imaginando um sistema com umas 50 entidades, eu terei 50 Bean representando as entidades, e terei que implementar dentro dos 50, certo?.
:arrow: Se eu jogar o código dentro do método execute (código para chamar o dao), eu não estarei misturando as coisas, ou seja, dentro de um modelo (MODEL do MVC) eu não estarei jogando regras de negócios também?
:arrow: Pensei em criar uma classe que extende a ActionSupport, dentro dessa clase colocar os métodos do DAO e depoi dentro do meu Bean extender essa classe, e dentro do método execute eu chamo apenas um método dessa classe, acredito que diminuirá o trabalho e reaproveitará código, será que isso é a melhor solução?
:arrow: Vamos supor que dentro do Form (no HTML), eu tenha um botao para gravar e outro pra deletar. Dentro do Execute eu vou ter que ver qual botao foi pressionado para ae sim selecionar qual operação efetuar? E isso não é misturar mais ainda regras de negócios dentro dos Modelos?
Dúvidas, Dúvidas e mais Dúvidas :roll: :roll:
Por enquanto é só…
Obrigado desde já
)