Spring - disallowDuplicateFormSubmission

2 respostas
Kenobi

Caros, estou utilizando o MultiActionController e estou tomando pau, após a inserção de algo (CRUD) se o usuário faz o refresh, o dado é duplicado na base.

Dei uma olhada na documentação e no exemplo do PetClinic, vem um exemplo de um método - disallowDuplicateFormSubmission, que funciona em cima do SimpleFormController.

Testei a utilização desse no MultiAction e não tive nenhum efeito. Gostaria de saber como lidam com tal questão.

Outra coisa que estou ficando puto com o SpringMVC é o fato dos controllers não possuirem métodos comuns, dependendo da hierarquia. Entendo a especialidade de cada, mas existem alguns que são básicos, como bind, getErrors, que poderiam ser encontrados em todos.

:?

2 Respostas

Gerson

Kenobi:
Caros, estou utilizando o MultiActionController e estou tomando pau, após a inserção de algo (CRUD) se o usuário faz o refresh, o dado é duplicado na base.

Dei uma olhada na documentação e no exemplo do PetClinic, vem um exemplo de um método - disallowDuplicateFormSubmission, que funciona em cima do SimpleFormController.

Testei a utilização desse no MultiAction e não tive nenhum efeito. Gostaria de saber como lidam com tal questão.

Deixando de usar o MultiActionController!, já que não ele não foi criado pra se trabalhar com formulário.
Você pode fazer da forma como eu já disse aqui http://www.guj.com.br/posts/list/15/39153.java#209728, ou simplesmente usar o SimpleFormController. Depois é só sobreescrever o método handleInvalidSubmit().

É preciso conhecer e estudar melhor o Spring MVC antes de usá-lo para não sair fazendo de qualquer jeito pois, assim, vai deixar de usar o que há de legal nele, e, pior, vai pensar que ele é muito complexo! O que mais vejo são pessoas que usam Spring mas sem ter estudado o suficiente pra obter um beneficio real dele.

Essa é a mesma questão. Se entender o propósito de cada Controller do Spring não estaria falando isso! Esqueça Struts e outros frameworks MVC. Voce tá trabalhando com Spring!
A propósito, voce está usando os métodos formBackingObject(), referenceData, onSubmit() / doSubmit(Action), etc, todos da classe SimpleFormController? Provavelmente não pois já teria sentido falta deles no MultiActionController. Mas saiba que se entender o workflow do processo de submissao do Spring, verá que esses métodos são extremamente úteis. E isso eu só ví no Spring até agora. Portanto, aconselho que leia um livro bem bacana sobre Spring. Vai fazer vc compreender muita coisa e usar o framework da forma correta.

Espero ter ajudado.

Kenobi

Essa é a mesma questão. Se entender o propósito de cada Controller do Spring não estaria falando isso! Esqueça Struts e outros frameworks MVC. Voce tá trabalhando com Spring!
A propósito, voce está usando os métodos formBackingObject(), referenceData, onSubmit() / doSubmit(Action), etc, todos da classe SimpleFormController? Provavelmente não pois já teria sentido falta deles no MultiActionController. Mas saiba que se entender o workflow do processo de submissao do Spring, verá que esses métodos são extremamente úteis. E isso eu só ví no Spring até agora. Portanto, aconselho que leia um livro bem bacana sobre Spring. Vai fazer vc compreender muita coisa e usar o framework da forma correta.

Sim entendi isso perfeitamente após o primeiro projeto, onde detectei o problema com a classe. O problema está em criar diversos controllers para um CRUD simples, como discutimos no tópico referenciado.

Estou sim fazendo uso dos métodos citados, até pq estou usando validator na ponta, preciso voltar o estado para o Form e estou usando o formBackingObject(, por exemplo pra isso , pois tenho dados que vem do meu request.

Concordo que o MultiActionController não exerce esse papel, mas a requisição para um MultiActionFormController cairia bem.

Estou pensando em contribuir para o projeto, com tal implementação, isso se tiver tempo.

Criado 14 de agosto de 2006
Ultima resposta 17 de ago. de 2006
Respostas 2
Participantes 2