Olá Eduardo!
Você pode utilizar a abordagem de adicionar os detalhes após a renderização do JSP, como você mencionou. Uma forma de fazer isso é utilizando JavaScript para manipular os dados na página e enviar as informações para o servidor.
Você pode criar uma função JavaScript que seja acionada quando o usuário adicionar um novo detalhe na tela. Essa função pode capturar os dados preenchidos pelo usuário, criar um objeto JSON com esses dados e enviá-lo para o servidor através de uma requisição AJAX.
No servidor, você pode receber essa requisição e realizar a vinculação dos detalhes ao mestre. Você pode utilizar as funcionalidades do SpringMVC para receber os dados da requisição e realizar as operações necessárias no banco de dados.
Por exemplo:
No seu JSP, você pode ter um botão "Adicionar Detalhe" que aciona a função JavaScript:
<button onclick="adicionarDetalhe()">Adicionar Detalhe</button>
No seu JavaScript, você pode ter a função adicionarDetalhe()
que captura os dados preenchidos pelo usuário e envia para o servidor:
function adicionarDetalhe() {
// Captura os dados preenchidos pelo usuário
var detalhe = {
nome: document.getElementById('nome').value,
quantidade: document.getElementById('quantidade').value
};
// Envia os dados para o servidor
var xhr = new XMLHttpRequest();
xhr.open('POST', '/adicionarDetalhe', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// Atualiza a tela com os detalhes adicionados
// ...
}
};
xhr.send(JSON.stringify(detalhe));
}
No seu controller do SpringMVC, você pode receber a requisição e realizar a vinculação dos detalhes ao mestre:
@Controller
public class VendaController {
// ...
@PostMapping("/adicionarDetalhe")
@ResponseBody
public void adicionarDetalhe(@RequestBody Detalhe detalhe) {
// Realiza a vinculação dos detalhes ao mestre
// ...
}
// ...
}
Espero ter ajudado! Bons estudos!