Action do struts

8 respostas
R

Pessoal

Tenho uma duvida nas actions do struts. Para cada ação do usuario, usa-se uma classe action do struts que representa essa ação. Ex.: CRUD - um formulario para criação, seleção, atualização e deleção de clientes.

Nesse caso, eu poderia criar a seguinte estrutura:

Solução 1

criação de cliente
view - novoCliente.jsp
controller - InserirClienteAction -> chama metodo pra inserir

atualização de cliebte
view - atualizaCliente.jsp
controller - atualizarClienteAction -> chama metodo pra atualizar

Solução 2

ou posso criar uma unica ação pra inserir e atualizar. Entao ficaria:

view - Cliente.jsp
Controller - ClienteAction - chamar o metodo de inserir ou atualizar(se houver o id do cliente no formulario) um cliente

Dizem que a solução 1 é recomendado pq 2 ações(no caso inserir e atulizar) podem ter validações diferente, mas no caso da solução 2 eu poderia tratar essas validações dentro do ClienteAction.

Na solução 2 teria que criar dois formularios exatamente identicos, só que 1 pra inserir o outro pra atualizar. Na solução 1 eu tenho somente 1 formulário e uso este pra inserir e atualizar um cliente

Qual a melhor solução?

obrigado

8 Respostas

Rafael_Carneiro

A “melhor” solução seria criar uma única classe Action (no seu caso, a classe ClienteAction). Para as telas, crie apenas uma tela para inserção e atualização. Depois, faça um esquema para deduzir que tipo de ação é para a tela (inserção ou atualização).

AndreAlves

Dá uma pesquisada em DispatchAction.
Para fazer CRUD é o ideal.

R

Pelo que entendi, a DispatchAction(permite ter N metodos) é uma evolução da action(permite ter somente o metodo execute).

No caso desse meu exemplo(ClienteAction), eu definiria se é atualização ou inserção verificando se o campo idCliente no form esta preenchido.

No caso da DispatchAction, eu teria que dizer o metodo que eu quero via GET ou Post, por exemplo: Cliente.do?method=inserir. Se meu formulario tem somente o botão salvar, qual criterio que eu usaria para definir qual metdodo chamar(inserir ou atualizar) da minha DispatchAction sem conter logica dentro de um jsp?

Obrigado

Anderson_Leite
class ClienteAction extends DispatchAction {

    //adicionar

    //excluir

}
no struts-config.xml coloque um parameter:
<action path="/cliente" type="ClienteAction" parameter="method" />

agora voce chama o metodo com
http://localhost:8080/suaapp/cliente.do?method=adicionar

R

Entendi Anderson,

Tenho uma outra duvida mais simples. Se eu tenho um unico formulario para inserir, atualizar e deletar, como eu resolvo o problema de ter somente um botao chamado “salvar” e outro “deletar” no meu formulario.

De alguma forma eu preciso chamar as Urls(http://…/cliente.do?method=adicionar e
http://…/cliente.do?method=deletar) dentro do botao salvar. Suponho que tenho que utilizar Js na chamar a Url correspondente de cada metodo

Abraços!

G

robsonsilvar:
Entendi Anderson,

Tenho uma outra duvida mais simples. Se eu tenho um unico formulario para inserir, atualizar e deletar, como eu resolvo o problema de ter somente um botao chamado “salvar” e outro “deletar” no meu formulario.

De alguma forma eu preciso chamar as Urls(http://…/cliente.do?method=adicionar e
http://…/cliente.do?method=deletar) dentro do botao salvar. Suponho que tenho que utilizar Js na chamar a Url correspondente de cada metodo

Abraços!

bom a grosso modo “if” na jsp, verifique de qual action se originou conforme o tipo esconda o outro botão.

I

\

I

Não sei criar uma classe action.

WEB_INF / classe / br / com/ x / x / x / action e form

quando abro não consigo modificar o arquivo.class
mudo a extensão e quando abro aparece codigo maluco.

Criado 21 de abril de 2009
Ultima resposta 10 de dez. de 2009
Respostas 8
Participantes 6