Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.parzibyte.sistemaventasspringboot;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.validation.BindingResult;
- import org.springframework.web.bind.annotation.*;
- import org.springframework.web.servlet.mvc.support.RedirectAttributes;
- import javax.validation.Valid;
- @Controller
- @RequestMapping(path = "/productos")
- public class ProductosController {
- @Autowired
- private ProductosRepository productosRepository;
- @GetMapping(value = "/agregar")
- public String agregarProducto(Model model) {
- model.addAttribute("producto", new Producto());
- return "productos/agregar_producto";
- }
- @GetMapping(value = "/mostrar")
- public String mostrarProductos(Model model) {
- model.addAttribute("productos", productosRepository.findAll());
- return "productos/ver_productos";
- }
- @PostMapping(value = "/eliminar")
- public String eliminarProducto(@ModelAttribute Producto producto, RedirectAttributes redirectAttrs) {
- redirectAttrs
- .addFlashAttribute("mensaje", "Eliminado correctamente")
- .addFlashAttribute("clase", "warning");
- productosRepository.deleteById(producto.getId());
- return "redirect:/productos/mostrar";
- }
- // Se colocó el parámetro ID para eso de los errores, ya sé el id se puede recuperar
- // a través del modelo, pero lo que yo quiero es que se vea la misma URL para regresar la vista con
- // los errores en lugar de hacer un redirect, ya que si hago un redirect, no se muestran los errores del formulario
- // y por eso regreso mejor la vista ;)
- @PostMapping(value = "/editar/{id}")
- public String actualizarProducto(@ModelAttribute @Valid Producto producto, BindingResult bindingResult, RedirectAttributes redirectAttrs) {
- if (bindingResult.hasErrors()) {
- if (producto.getId() != null) {
- return "productos/editar_producto";
- }
- return "redirect:/productos/mostrar";
- }
- Producto posibleProductoExistente = productosRepository.findFirstByCodigo(producto.getCodigo());
- if (posibleProductoExistente != null && !posibleProductoExistente.getId().equals(producto.getId())) {
- redirectAttrs
- .addFlashAttribute("mensaje", "Ya existe un producto con ese código")
- .addFlashAttribute("clase", "warning");
- return "redirect:/productos/agregar";
- }
- productosRepository.save(producto);
- redirectAttrs
- .addFlashAttribute("mensaje", "Editado correctamente")
- .addFlashAttribute("clase", "success");
- return "redirect:/productos/mostrar";
- }
- @GetMapping(value = "/editar/{id}")
- public String mostrarFormularioEditar(@PathVariable int id, Model model) {
- model.addAttribute("producto", productosRepository.findById(id).orElse(null));
- return "productos/editar_producto";
- }
- @PostMapping(value = "/agregar")
- public String guardarProducto(@ModelAttribute @Valid Producto producto, BindingResult bindingResult, RedirectAttributes redirectAttrs) {
- if (bindingResult.hasErrors()) {
- return "productos/agregar_producto";
- }
- if (productosRepository.findFirstByCodigo(producto.getCodigo()) != null) {
- redirectAttrs
- .addFlashAttribute("mensaje", "Ya existe un producto con ese código")
- .addFlashAttribute("clase", "warning");
- return "redirect:/productos/agregar";
- }
- productosRepository.save(producto);
- redirectAttrs
- .addFlashAttribute("mensaje", "Agregado correctamente")
- .addFlashAttribute("clase", "success");
- return "redirect:/productos/agregar";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement