Preenchimento e envio de formulários com Spring MVC e JSP

Eu estou inciando em Java Web, desenvolvendo um sistema de estoque seguindo a apostila da Caelum de Java para Web.

Todo o front-end e a camada de persistência já foram desenvolvidas restando somente a controle integrando as duas, porém eu estou com muitas duvidas quando se trata de obter os dados da pagina para tratá-los, inserir no banco e etc…

Por exemplo na pagina abaixo, eu tenho o Formulário de envios, de acordo com o que ensina a apostila eu tenho que manter os campos nomeados de acordo com os atributos correspondentes da classe Envio, até aí tranquilo, o problema é que dentro do form eu tenho um sub formulario que corresponde a classe ItemEnvio e uma tabela, onde eu posso inserir varios itens.

Meu objetivo é preencher um ArrayList com os itens adicionados nessa tabela e os dados da parte de cima do form em um objeto Envio, enviar as duas para controller e ela adicionar no banco de dados, é a lógica que eu utilizo quando desenvolvo em Java usando Swing com JTable e etc…

Alguém pode dar uma orientação de como proceder?

Desculpe, mas não li essa apostila.
Assim sendo, ela utiliza quais tecnologias? Servlets e jsp? Algum framework? Spring? Play? vRaptor?

1 curtida

Ela utiliza Hibernate para persistência, e SpringMVC na camada de controller, as páginas são JSP

Ok, SpringMVC trabalha com um conceito de “amarra” entre a camada de controle (os famosos @Controller) e a view.
Como está teu form (e o sub form)? E como está o método que deverá receber a requisição?

1 curtida

Ainda não desenvolvi o método que irá receber, pois to estudando como vou fazer isso, uma vez que ele deverá receber um objeto Envio e uma List do tipo ItemEnvio. Nesse caso existem dois pontos: preencher a List(sem encher a JSP de Scriptlet) com os dados da tabela que acompanha o sub-form (O usuário preenche o sub-form, aperta o botão “+” e ele insere os dados na tabela ao lado, para depois ser inserido tudo ao final), e passar esse List e um objeto Envio.

Nos exemplos que eu encontrei eram todos fomulários simples, onde o submit “chamava” o @RequestMapping de algum método que recebia como parâmetro um objeto que era “preenchido” pelo próprio SpringMVC, uma vez que os nomes do input do form correspondia aos atributos da classe recebida.

Existe uma forma de manipular list só usando taglibs? Como passar um list e um objeto para a controller?

Sim, desde o lançamento do JSTL + EL em 2000
<c:forEach items="suaLista" var="item"> e você consegue brincar com a lista.
O Spring MVC trabalha com @RequestParam, não?

1 curtida

Eu não quero, por hora, percorrer uma lista. Eu quero criar um lista na página, e cada vez que o usuário preenche o subform e aberta no “+” ele adiciona um objeto ItemEnvio nessa lista com os dados que ele inseriu, caso ele queria tirar um item ele aperta “-” e remove da lista, de preferência atualizando dinamicamente a tabelinha, aí sim percorrer a lista para popular a tabela

Nesse caso, o ideal é ter um método no controller que corresponda à cada ação: inserir um novo registro na tabela, editá-lo e removê-lo.

1 curtida

Eu encontrei a solução em diversos tópicos em fóruns na web, como eu já havia postado essa mesma duvida no Stack Overflow deixo aqui o link do tópico já respondido