1
resposta

Mestre/Detalhe - SpringMVC

Olá

Estou fazendo um pequeno projeto em Java usando SpringMVC... e gostaria de fazer uma tela de mestre/detalhe (de uma venda), mas estou com duvidas de como seria feito a vinculação dos detalhes ao mestre. Visto que os detalhes serão adicionados após a renderização do JSP. Se alguém puder me indicar um caminho seria de grande ajuda !

Obrigado.

1 resposta

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!