WebWork: Modelagem

8 respostas
Wanderley2k

Pessoal,

Estou fazendo uma pagina com WebWork + Velocity + Hibernate, ainda estou nas telas de cadastro e gostaria de levantar uma discussão sobre a melhor forma de organizar uma action.

Por exemplo eu tenho um objeto chamado ATENDENTE, no cadastro o USUARIO pode salvar um atendente, localizar, excluir… a pergunta eh… Devo separatodos todos este comando e várias actions ou deixa tudo em uma soh?

O Localizar eu poderia enviar para outra action… onde ele localizaria o cliente … e para voltar no cadastro… eu chamo que action?? um localizar interno??

O Excluir, ele merece uma action separada?

devo criar:

novoAtendete.action
excluirAtendente.action
salvarAtendente.action
AtendenteLocalizar.action <-- Responsavel por localizar um cliente no BD
abrirAtendente.action <-- Este abre o Item localizado

E tem outra, para ter várias actions eu tereia que ficar toda hora no HTML alterando a propriedade action do form, para enviar para a action correta…

Alguem tem idéia de como resolver este probleminha?? Ou conhece um designer pattern pra isso…

Valeus,
Wanderley

8 Respostas

smota

Em algum lugar você vai ter que indicar qual a ação tomar, então você tem 2 opções:

  1. Criar uma mapeamento de action para cada ação (salvar, editar, excluir, etc.) mas internamente poderá ter apenas uma classe com diferente métodos para cada uma dessas ações (fica fácil dar manutenção).

  2. Mapear tudo para a mesma action e na view em cada formulário tem um campo hidden indicando qual a ação a ser tomada … esse esquema é xarope porque você amarra sua view a camada de negócios já que vai ter um punhado de ifs lá (feio).

Wanderley2k

Tem como eu mapear uma action para uma classe e indicar qual método de ser executado?

Rodrigo_Carvalho_Aul

Tem:

<action name="actionDelete" class="br.com.empresa.Action" method="delete"> ... </action>

[]'s

Paulo_Silveira

rodrigo, dava para fazer isso desde a 1.x?

Rodrigo_Carvalho_Aul

Isso não sei… comecei a brincar com WebWork já na versão beta do 2…

[]'s

smota

Sim! Você chamava a action (no submit ou no link, como quiser) mais ou menos assim action.action!delete

O mapeamento era único mas a chamada variava (inclusive eu acho que o 2 continua permitindo essa notação, tem que testar pra ver).

Paulo_Silveira

eh…
a galerinha aqui no GUJ apavora mesmo.

urubatan

Sim! Você chamava a action (no submit ou no link, como quiser) mais ou menos assim action.action!delete

O mapeamento era único mas a chamada variava (inclusive eu acho que o 2 continua permitindo essa notação, tem que testar pra ver).
no 2.0 isto não estava funcionando, voltou a funcionar na versão que largaram esta semana.

Criado 24 de junho de 2004
Ultima resposta 25 de jun. de 2004
Respostas 8
Participantes 5