Boa noite galera tudo bem?
Estou fazendo um trabalho de TCC e estou utilizando o Spring MVC, não tenho muito conhecimento nesse framewok.
é o seguinte estou tentando fazer um formulário onde ele não deixa o usuário cadastrar a data <= que a data atual isso consegui fazer via javascript na view.
agora estou na etapa em que eu deveria pegar a data que o usuário digitou e verificar se a mesma já foi cadastrada no banco, porem não estou conseguindo ver e enviar os dados da view para a control
poderiam me dar uma força?
segue os códigos da view e da control
<%@ page contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8” %>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<%@ taglib uri=“http://github.com/dandelion” prefix=“dandelion” %>
<%@ taglib prefix=“spring” uri=“http://www.springframework.org/tags” %>
<%@ taglib prefix=“form” uri=“http://www.springframework.org/tags/form” %><c:set var=“actionSalvar”><c:url value="/cardapios/salvar"/></c:set>
<dandelion:bundle includes=“jquery.validation,jquery.inputmask,jquery.datetimepicker” />
'>Cardápios" /> Cadastro de cardápios $(document).ready(function() { var formValidator = $("#cardapio").validate({ rules : { data : { required : true, }, tipoRefeicao : { required : true }, pratoBase : { required : true, maxlength : 50 ,minlength:3}, pratoPrincipal : { required : true, maxlength : 100 ,minlength:3}, guarnicao : { required : true, maxlength : 100 ,minlength:3}, salada : { required : true, maxlength : 50 ,minlength:3}, sobremesa : { required : true, maxlength : 50 ,minlength:3}, suco : { required : true, maxlength : 50 ,minlength:3} } }); $("#data").focus(); $("#div-data").datetimepicker({locale: "pt-br", format: "DD/MM/YYYY"}); $("#data").inputmask("99/99/9999"); });function comparaData() { var data = document.getElementById('data').value; var objDate = new Date(); objDate.setYear(data.split("/")[2]); objDate.setMonth(data.split("/")[1] - 1);//- 1 pq em js é de 0 a 11 os meses objDate.setDate(data.split("/")[0]); if(objDate.getTime() <= new Date().getTime()){ alert("Data cardapio não pode ser menor ou igual a data atual"); document.getElementById('data').value=''; return false; } } </script> <form:form action="${actionSalvar}" modelAttribute="cardapio" > <form:hidden path="id" /> <div class="panel panel-primary col-xs-12 col-md-8 col-md-offset-2"> <div class="panel-body"> <div class="page-header" style="margin-top: 10px;"> <jsp:include page="/layouts/modal-mensagens.jsp"><jsp:param name="model" value="cardapio"/></jsp:include> <h3> <strong>Cardápio</strong> </h3> </div> <div class="row"> <spring:bind path="data"> <div class="form-group col-xs-12 col-md-6"> <label for="data" class="control-label">Data</label> <div class="input-group date" id="div-data"> <form:input path="data" class="form-control" onblur="comparaData();" items="${pesquisaDataCardapio}" action="pesquisaData"/> <span class="input-group-addon"> <span class="glyphicon glyphicon-calendar"></span> </span> </div> </div> </spring:bind> <spring:bind path="tipoRefeicao"> <div class="form-group col-xs-12 col-md-6"> <label for="tipoRefeicao" class="control-label">Refeição</label> <form:select path="tipoRefeicao" class="form-control"> <form:option value="" label="----- Selecione uma refeição -----"/> <form:options items="${tipoRefeicao}" itemLabel="descricao" itemValue="id" /> </form:select> </div> </spring:bind> </div> <div class="row"> <spring:bind path="pratoBase"> <div class="form-group col-xs-12 col-md-6 ${status.error ? 'has-error' : ''}"> <label for="pratoBase" class="control-label">Prato Base</label> <form:input path="pratoBase" class="form-control" placeholder="Digite o prato base" pattern="[^0-9]+"/> <span class="has-error"><form:errors path="pratoBase" class="help-block"/></span> </div> </spring:bind> <spring:bind path="pratoPrincipal"> <div class="form-group col-xs-12 col-md-6 ${status.error ? 'has-error' : ''}"> <label for="pratoPrincipal" class="control-label">Prato Principal</label> <form:input path="pratoPrincipal" class="form-control" placeholder="Digite o prato principal" pattern="[^0-9]+"/> <span class="has-error"><form:errors path="pratoPrincipal" class="help-block"/></span> </div> </spring:bind> </div> <div class="row"> <spring:bind path="guarnicao"> <div class="form-group col-xs-12 col-md-6 ${status.error ? 'has-error' : ''}"> <label for="guarnicao" class="control-label">Guarnição</label> <form:input path="guarnicao" class="form-control" placeholder="Digite a guarnição" pattern="[^0-9]+"/> <span class="has-error"><form:errors path="guarnicao" class="help-block"/></span> </div> </spring:bind> <spring:bind path="salada"> <div class="form-group col-xs-12 col-md-6 ${status.error ? 'has-error' : ''}"> <label for="salada" class="control-label">Salada</label> <form:input path="salada" class="form-control" placeholder="Digite a salada" pattern="[^0-9]+"/> <span class="has-error"><form:errors path="salada" class="help-block"/></span> </div> </spring:bind> </div> <div class="row"> <spring:bind path="sobremesa"> <div class="form-group col-xs-12 col-md-6 ${status.error ? 'has-error' : ''}"> <label for="sobremesa" class="control-label">Sobremesa</label> <form:input path="sobremesa" class="form-control" placeholder="Digite a sobremesa" pattern="[^0-9]+"/> <span class="has-error"><form:errors path="sobremesa" class="help-block"/></span> </div> </spring:bind> <spring:bind path="suco"> <div class="form-group col-xs-12 col-md-6 ${status.error ? 'has-error' : ''}"> <label for="suco" class="control-label">Suco</label> <form:input path="suco" class="form-control" placeholder="Digite o suco" pattern="[^0-9]+"/> <span class="has-error"><form:errors path="suco" class="help-block"/></span> </div> </spring:bind> </div> </div> <div class="form-group col-x-12 col-md-12" style="text-align: center; margin-top: 25px;"> <button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-floppy-disk"></span> Salvar</button> </div> </div> </form:form>
código controller
package com.github.projetoleaf.controllers;import java.lang.ProcessBuilder.Redirect; //import java.sql.Date; //import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List;import javax.validation.Valid;
//import javax.xml.crypto.Data;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.github.projetoleaf.beans.Cardapio; import com.github.projetoleaf.beans.TipoRefeicao; import com.github.projetoleaf.repositories.CardapioRepository; import com.github.projetoleaf.repositories.TipoRefeicaoRepository; import lombok.extern.slf4j.Slf4j;@Slf4j @Controller @RequestMapping("/cardapios") public class CardapioController {@Autowired private CardapioRepository cardapioRepository; @Autowired private TipoRefeicaoRepository tipoRefeicaoRepository; @Autowired private MessageSource config; @GetMapping public String pesquisarCategoria(Model model) { model.addAttribute("listagemCardapios", cardapioRepository.findAll(new Sort(Sort.Direction.ASC, "data"))); return "/cardapios/pesquisar"; } @GetMapping("/incluir") public String incluirCardapio(Model model) { TipoRefeicao trad = tipoRefeicaoRepository.findByDescricao("Tradicional"); TipoRefeicao veget = tipoRefeicaoRepository.findByDescricao("Vegetariano"); List<TipoRefeicao> tipoRefeicao = new ArrayList<TipoRefeicao>(); tipoRefeicao.add(trad); tipoRefeicao.add(veget); model.addAttribute("cardapio", new Cardapio()); model.addAttribute("tipoRefeicao", tipoRefeicao); return abrirCadastroCardapio(model); } @GetMapping("/editar/{id}") public String editarCardapio(@PathVariable Long id, Model model) {Cardapio cardapio =
cardapioRepository.findOne(id);TipoRefeicao trad = tipoRefeicaoRepository.findByDescricao("Tradicional"); TipoRefeicao veget = tipoRefeicaoRepository.findByDescricao("Vegetariano"); List<TipoRefeicao> tipoRefeicao = new ArrayList<TipoRefeicao>(); tipoRefeicao.add(trad); tipoRefeicao.add(veget); model.addAttribute("cardapio", cardapio); model.addAttribute("tipoRefeicao", tipoRefeicao); return abrirCadastroCardapio(model); } public String abrirCadastroCardapio(Model model) { return "/cardapios/cadastro"; } @PostMapping("/salvar") public String salvarCardapio(Model model, @ModelAttribute("cardapio") @Valid Cardapio cardapio, BindingResult result) { try { if (!result.hasErrors()) { Cardapio cardapioAtualizado = cardapioRepository.save(cardapio); log.info(cardapioAtualizado.toString() + " gravado com sucesso"); model.addAttribute("mensagemInfo", config.getMessage("gravadoSucesso", new Object[] { "o cardápio" }, null)); } } catch (Exception ex) { log.error("Erro de processamento", ex); model.addAttribute("mensagemErro", config.getMessage("erroProcessamento", null, null)); } return "redirect:/cardapios"; } @GetMapping("/excluir/{id}") public String excluirCardapio(RedirectAttributes ra, @PathVariable Long id) { try { cardapioRepository.delete(id); log.info("Cardápio #" + id + " excluído com sucesso"); ra.addFlashAttribute("mensagemInfo", config.getMessage("excluidoSucesso", new Object[] { "o cardápio" }, null)); } catch (Exception ex) { log.error("Erro de processamento", ex); ra.addFlashAttribute("mensagemErro", config.getMessage("erroProcessamento", null, null)); } return "redirect:/cardapios"; } @PostMapping("/pesquisaData") public String pesquisaDataCardapio(Model model, @ModelAttribute("cardapio") Cardapio cardapio) { System.out.println("entrou controler"); if(cardapioRepository.verificarSeDataExisteNoBD(cardapio.getData())!= null) return "redirect:/cardapios/erro"; else return "redirect:/cardapios/incluir"; }}