我通过$ {produto.dataUsuarioInsercao}从数据库中获取了一个特定的日期,可以在表单中显示它,这是完全可以的,但是当保存表单时,它会创建一个随机日期并将其保存在数据库中真的不知道为什么。 在我的控制器中,我没有设定离开该字段的确切日期。 示例:当我打开表单时,$ {produto.dataUsuarioInsercao}是27/11/2018 02:13:57我保存表单而不做任何修改,而$ {produto.dataUsuarioInsercao}是11/05/2020 02:13 :57 谁能帮我?
<fmt:formatDate value="${produto.dataUsuarioInsercao}" var="dateString" pattern="dd/MM/yyyy hh:mm:ss" type="both" />
<form:input type="hidden" path="dataUsuarioInsercao" value="${dateString}" readonly="true"/>
<form:input type="hidden" path="nomeUsuarioAlteracao" name="nomeUsuarioAlteracao" value="${produto.nomeUsuarioAlteracao}"/>
<fmt:formatDate value="${produto.dataUsuarioAlteracao}" var="dateString1" pattern="dd/MM/yyyy hh:mm:ss" type="both" />
<form:input type="hidden" path="dataUsuarioAlteracao" value="${dateString1}" readonly="true"/>
</div>
<div class="panel-body">
<p>Criado por ${produto.nomeUsuarioInsercao} ás ${dateString} modificado por ${produto.nomeUsuarioAlteracao} ás ${dateString1}</p>
</div>
<div class="panel-body" id="myBtn">
<a class="btn btn-primary" href="<c:url value="/produtos" />">Início</a>
<a class="btn btn-primary" href="<c:url value="/cadastros/produto" />">Novo</a>
<input class="btn btn-primary" type="submit" value="Salvar" />
<a class="btn btn-primary" id="btnConfirmar">Excluir</a>
</div>
<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true" id="meuModal">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Tem certeza que deseja excluir o registro?</h4>
</div>
<div class="modal-footer">
<a class="btn btn-primary " href="<c:url value="/cadastros/deletar/${produto.id}" />">Sim</a>
<button type="button" class="btn btn-primary" id="modalBtnNao">Não</button>
</div>
</div>
</div>
</div>
</table>
</form:form>
</div>
</div>
@Controller
public class ProdutoController{
@Autowired
private ProdutoService produtoService;
//Método que retorna a lista de produtos
@RequestMapping(value="/produtos", method=RequestMethod.GET)
public ModelAndView listarProdutos () {
ModelAndView modelAndView = new ModelAndView("listas/produto");
modelAndView.addObject("produtos", produtoService.lista());
return modelAndView;
}
//Método que abre um produto para a edição
@RequestMapping(value="/cadastros/editar/{id}")
public ModelAndView visualizarProduto(@PathVariable Long id) {
ModelAndView modelAndView = new ModelAndView("edicoes/produto");
Produto produto = produtoService.get(id);
modelAndView.addObject("produto", produto);
modelAndView.addObject("unidades", ProdutoUnidades.values());
modelAndView.addObject("operacoes", ProdutoOperacoes.values());
modelAndView.addObject("categorias", ProdutoCategorias.values());
modelAndView.addObject("marcas", ProdutoMarcas.values());
modelAndView.addObject("modelos", ProdutoModelos.values());
modelAndView.addObject("status", ProdutoStatus.values());
return modelAndView;
}
//Método que abre um formulário para criação de um produto
@RequestMapping(value="/cadastros/produto")
public ModelAndView criarProduto(@ModelAttribute Produto produto) {
ModelAndView modelAndView = new ModelAndView("cadastros/produto");
modelAndView.addObject("unidades", ProdutoUnidades.values());
modelAndView.addObject("operacoes", ProdutoOperacoes.values());
modelAndView.addObject("categorias", ProdutoCategorias.values());
modelAndView.addObject("marcas", ProdutoMarcas.values());
modelAndView.addObject("modelos", ProdutoModelos.values());
modelAndView.addObject("status", ProdutoStatus.values());
return modelAndView;
}
//Método que salva um produto no banco de dados
@RequestMapping(value="/cadastros/salvaProduto", method=RequestMethod.POST)
public ModelAndView salvaProduto(@Valid @ModelAttribute("produto") Produto produto, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
System.out.println(bindingResult.toString());
return criarProduto(produto);
}
produtoService.salvar(produto);
produto = produtoService.get(produto.getId());
ModelAndView modelAndView = new ModelAndView("redirect:/cadastros/editar/"+produto.getId());
return modelAndView;
}
//Método que atualiza um produto no banco de dados
@RequestMapping(value="/cadastros/atualizaProduto", method=RequestMethod.POST)
public ModelAndView atualizaProduto(@Valid @ModelAttribute("produto") Produto produto,
BindingResult bindingResult) {
ModelAndView modelAndView;
if(bindingResult.hasErrors()) {
modelAndView = new ModelAndView("edicoes/produto");
modelAndView.addObject("produto", produto);
modelAndView.addObject("unidades", ProdutoUnidades.values());
modelAndView.addObject("operacoes", ProdutoOperacoes.values());
modelAndView.addObject("categorias", ProdutoCategorias.values());
modelAndView.addObject("marcas", ProdutoMarcas.values());
modelAndView.addObject("modelos", ProdutoModelos.values());
modelAndView.addObject("status", ProdutoStatus.values());
return modelAndView;
}
produtoService.atualizar(produto);
modelAndView = new ModelAndView("redirect:/cadastros/editar/"+produto.getId());
return modelAndView;
}
//Método que deleta um produto no banco de dados
@RequestMapping(value="/cadastros/deletar/{id}")
public ModelAndView deletaProduto(@PathVariable Long id) {
Produto produto = produtoService.get(id);
produtoService.deletar(produto);
ModelAndView modelAndView = new ModelAndView("redirect:/produtos");
return modelAndView;
}
}