Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Salvar o valor de um input mesmo sem dar submit

Estou fazendo um formulario de entrada de produtos, no qual possui um campo data e um button que direciona para outro formulário que recebe o valor e a quantidade de um produto e manda de volta para o 1º formulário e exibe na tabela. Porém quero que meu input do tipo date exiba a data atual e caso o usuário mude o valor mantenha salvo o valor do input. Estou usando o Spring com o thymeleaf, segue os códigos:

Formulário 1:

<form class="card-body mt-1" method="post">
                <div class="row">
                    <div class="col-md-6">
                        <label for="dataInput" class="control-label">Data</label>
                        <input id="dataInput" type="date" class="form-control" th:value="${#dates.format(#dates.createNow(), 'yyyy-MM-dd')}"/>
                    </div>
                    <div class="col-md-6">
                        <label class="control-label">Número</label>
                        <input type="text" class="form-control" disabled/>
                    </div>
                </div>

                <div class="col-md-12 mt-3"><a class="btn btn-primary" href="/acao/entrada/produto/formulario">Adicionar Produto</a> <a href="/acao/removeProdutos" class="btn btn-info" th:if="${produtos != null}">Limpa todos os produtos</a></div>

                <div class="table-responsive mt-3">
                    <table class="table table-bordered table-hover"  th:if="${produtos != null}">
                        <thead>
                            <tr class="text-center">
                                <th>Produto</th>
                                <th>Quantidade</th>
                                <th>Ação</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr th:each="p : ${produtos}" class="text-center">
                                <td th:text="${p.produto.nome}">Produto</td>
                                <td th:text="${p.quantidade}">Quantidade</td>
                                <td>Editar Excluir</td>
                            </tr>
                        </tbody>
                    </table>
                </div>

                <div class="col-md-6 mt-4">
                    <div class="row">
                        <div class="col-md-6">
                            <a href="/acao/inventory" class="btn btn-danger">Cancelar</a>
                            <button class="btn btn-success">Salvar</button>
                        </div>
                    </div>
                </div>
            </form>

Controller

@Controller
@RequestMapping("/acao")
public class MovimentoController {

    @Autowired
    private ProdutoRepository produtoRepository;

    @Autowired
    private MovimentoRepository movimentoRepository;

    @Autowired
    private ItemMovimentoRepository itemMovimentoRepository;

    @Autowired
    private EntradaProdutoService entradaProdutoService;

    @GetMapping("/entrada")
    public String carregaFormularioEntrada() {

        return "entrada/formEntrada";
    }

    @PostMapping("/entrada/produtos")
    public String processaFormularioEntrada(Long produtoId, Integer quantidade, Model model) {
        if(produtoId != null && quantidade != null) {
           entradaProdutoService.adicionaProduto(produtoId, quantidade);
       }
        model.addAttribute("entrada", entradaProdutoService.getMovimento());
        model.addAttribute("produtos", entradaProdutoService.listaDeProdutos());

       return "entrada/formEntrada";
    }

    @GetMapping("entrada/produto/formulario")
    public String carregaFormularioProduto(Model model) {
        var produtos = produtoRepository.findAll().stream().sorted(Comparator.comparing(Produto::getNome)).toList();
        model.addAttribute("produtos", produtos);

        return "entrada/formProduto";
    }
4 respostas
solução!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

quero que por exemplo, o usuário mude a data para 04/04/2021 e ao clicar no botão de adicionar produto não volte a exibir a data atual e sim a modificada. A cada produto adicionado é uma requisição e o formulário acima recebe os dados e exibe. ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

formulario de produto: ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Se tiver alguma forma ficarei muito grato, é um detalhe que gostaria muito no meu projeto

Marquei como solução sem querer!!!!

Oi Caio,

para qualquer interatividade ou interação entre cliente e servidor, sem enviar uma requisição pelo submit, é preciso usar JavaScript (Ajax).

Peço desculpas pois a minha resposta é um pouco generica, mas claro que temos cursos sobre JavaScript (!!), por exemplo:

https://cursos.alura.com.br/formacao-javascript-front-end

Espero ter ajudado de alguma forma (um pouco).

Abs, Nico

Obrigado Nico, vou dar uma estudada para me aprofundar mais nessa parte, imaginei ser isso mesmo. Gostei muito das suas aulas abs.