Pergunta

Eu estou usando um framework MVC que é um pouco como suportes. Então, digamos que eu tenho um link "Editar Store" na minha aplicação é assim que o URL será parecido com:

http: // localhost: 9080 / test action = editStore & storeNum = 10

Agora, a ação determina meu Ação (análogo ao Struts Ação) para ser executado. A ação correspondente aqui é: EditStoreAction. Ao clicar neste iria abrir um pop-up com diferentes atributos de uma loja para edição.

A minha pergunta aqui é: Como faço para escrever minhas ações? Faço para escrever duas acções neste contexto?

  1. EditStoreAction que tornará Edit.jsp
  2. StoreSaveAction que será invocado quando o usuário pressiona aceito na resposta rendido do Edit.jsp.

ou eu só escrever uma ação? EditStoreAction e enviar o formulário com a mesma acção, gostaria de saber que o usuário pressionou o botão aceitar para alterações em sua apresentação. Portanto, gostaria de executar um fluxo diferente na ação, o que permitiria poupar atualizações ao banco de dados e redirecionar para uma página de diff.

O que é o melhor pratice aqui? Crie quantas ações como possível coz ele mantém o código modular? Ou simplesmente escrever uma ação para lidar com Everthing em um jsp?

Eu sei que esta pergunta soa um pouco trivial, no entanto, às vezes você só quer ficar tudo certo. Assim, a pergunta. Agradecemos a sua ajuda.

Foi útil?

Solução

A idéia é, semelhante ao Spring MVC, para mapear suas ações para os métodos de uma classe específica, diga-controlador.

Assim, no seu caso, essas duas ações serão mapeados em dois métodos diferentes da mesma classe. Você pode chamar o StoreFormController classe e dois métodos, editStore() e saveStore().

Melhor ainda se você fizer dois controladores para cada entidade. Pode ser uma para todas as solicitações GET e outro é para solicitações POST. Assim, no seu caso, não haveria dois controladores StoreController para todas as outras solicitações e StoreFormController para todos os envios de formulários, ou seja, solicitações POST. Agora, sua primeira ação ser GET irá para o método editStore() de StoreController, enquanto que o segundo pedido POST estar irá para método saveStore() de StoreFormController. Você pode definir tantos métodos conforme necessário em qualquer destas duas classes com base no tipo do pedido.

Você pode facilmente ver onde eu estou vindo, se você sabe Spring MVC API.

Outras dicas

Eu gosto de usar suportes classe DispatchAction porque eu poderia definir mais de um método na classe de ação (o "executar") método. Atrás do capô, tudo que faz é para encontrar o método que ele tem para executar (apresentado em forma ou passados ??na URL), encontrar o método usando reflexão, invocá-lo com o direito conjunto de argumentos (o método deve ter o mesmo assinatura do método "executar"), recebe-lo resultar e passá-lo. O DispatchAction simplesmente substitui a "executar" método da classe de Acção para implementar esse comportamento.

Dito isto, no seu caso, eu definiria apenas uma classe - digamos "DispatchStoreAction", e gostaria de definir dois métodos, provavelmente, "preparação" e "salvar". Eu gosto de fazer isso dessa maneira porque eu ainda tenho uma abstração boa classe (e você não colocar a "ação" você está executando no nome da classe), porque seus métodos podem identificar claramente o que é suposto fazer, e também porque, por definição, classes de ação tendem a ser pequenos. Você provavelmente terá um "StoreLogic" ou "StoreBusiness" em algum lugar definido, e esta classe irá lidar com a lógica de negócios relacionada com a entidade que você está trabalhando. Pessoalmente, penso que é bom se você tiver um "StoreAction" e depois um "StoreLogic", um "UserAction" e um "UserLogic" e assim por diante - a relação não precisa ser de 1 a 1, mas eu acho que ajuda a manter o código.

Verifique o código-fonte da classe DispatchAction de ideias sobre como fazer isso, mas a implementação deve ser trivial.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top