Контроллер в порядке? Ошибка разбора одного шаблона, в то время как другие работают нормально - PullRequest
0 голосов
/ 30 марта 2019

Я работаю над упражнением, которое имитирует магазин, но при печати на экране опция добавления товаров не работает. Распечатайте белую ошибку:

Страница ошибки Whitelabel Это приложение не имеет явного сопоставления для / error, поэтому вы видите это как запасной вариант. Сб 30 мар 17:09:05 CET 2019 Произошла непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус = 500). Произошла ошибка при разборе шаблона (template: "ресурс пути к классу [templates / producto.html]")

Я пытался улучшить ссылки в модели и изменил имя на некоторые параметры, но эта ошибка продолжала появляться.

Это контроллер.

@Controller
public class ProductController {

    @Autowired
    ProductService productService;

    @GetMapping (value = "/addProduct")
    public String addProduct (Model model) {
        model.addAttribute("producto", new Product ());
        return "producto";

    }

    @GetMapping (value = "/deleteProduct")
    public String deleteProduct (Model model, @RequestParam Integer idProduct) {
        productService.deleteProduct(idProduct);
        return "redirect:/list-productos";

    }

    @GetMapping (value = "/updateProduct")
    public String updateProduct (Model model, @RequestParam Integer idProduct) {
        Product producto = productService.getProductById(idProduct);
        model.addAttribute("producto", producto);
        return "producto";

    }

    @PostMapping (value = "/addProduct")
    public String addProduct (Model model, String nombre, String descripcion, String marca, float precio) {
        productService.addProduct(nombre, descripcion, marca, precio);
        return "redirect:/list-productos";

    }

    @PostMapping (value = "/updateProduct")
    public String updateProduct (Model model, Product producto) {
        productService.updateProduct(producto);
        return "redirect:/list-productos";

    }


}

Это услуга.

public interface ProductService {

    List<Product> getAll();

    Product getProductById(Integer idProduct);

    void addProduct(String nombre, String descripcion, String marca, float precio);

    void addProduct(Product product);

    void updateProduct(Product product);

    void deleteProduct(Integer idProduct);
}

Это реализация.

@Service
public class ProductServiceImpl implements ProductService {

    @Autowired
    ProductRepository productRepository;

    @Override
    public List<Product> getAll() {
        return productRepository.findAll();
    }

    @Override
    public void addProduct(String nombre, String descripcion, String marca, float precio) {
        Product producto = new Product(nombre, descripcion, marca, precio);
        productRepository.save(producto);

    }

    @Override
    public void addProduct(Product product) {
        productRepository.save(product);

    }

    @Override
    public void updateProduct(Product product) {
        productRepository.save(product);

    }

    @Override
    public void deleteProduct(Integer idProduct) {
        Optional<Product> producto = productRepository.findById(idProduct);
        if (producto.isPresent()) {
            productRepository.deleteById(idProduct);
        }
    }

    @Override
    public Product getProductById(Integer id) {     
        return productRepository.getOne(id);
    }

}

Это модель

@Entity
@Table (name = "product")
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column (name = "idProduct")
    private Integer idProduct;

    @Column (name = "nombre")
    private String nombre;

    @Column (name = "descripcion")
    private String descripcion;

    @Column (name = "marca")
    private String marca;

    @Column (name = "precio")
    private float precio;

    @OneToMany(mappedBy = "producto")
    private Set<OrderLine> orderLines;

    public Product() {

    }

    public Product(String nombre, String descripcion, String marca, float precio) {
        super();
        this.nombre = nombre;
        this.descripcion = descripcion;
        this.marca = marca;
        this.precio = precio;
    }



    public Integer getIdProduct() {
        return idProduct;
    }
    public void setId(Integer idProduct) {
        this.idProduct = idProduct;
    }
    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getDescripcion() {
        return descripcion;
    }
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    public String getMarca() {
        return marca;
    }
    public void setMarca(String marca) {
        this.marca = marca;
    }
    public float getPrecio() {
        return precio;
    }
    public void setPrecio(float precio) {
        this.precio = precio;
    }   

}

Это форма в HTML.

<form th:action="@{/addProduct}" th:object="${producto}"
                    method="post">
                    <div class="form-group">
                        <label for="nombre" class="control-label">Nombre</label> <input
                            id="nombre" class="form-control" th:field="*{nombre}" />
                    </div>
                    <div class="form-group">
                        <label for="descripcion" class="control-label">Descripción</label>
                        <input id="descripcion" class="form-control"
                            th:field="*{descripcion}" />
                    </div>
                    <div class="form-group">
                        <label for="marca" class="control-label">Marca</label> <input
                            id="marca" class="form-control" th:field="*{marca}" />
                    </div>
                    <div class="form-group">
                        <label for="precio" class="control-label">Precio</label> <input
                            id="precio" class="form-control" th:field="*{precio}" />
                    </div>
                    <div class="form-group">
                        <button type="submit" class="btn btn-success">Añadir
                            producto</button>
                    </div>
                </form>

1 Ответ

1 голос
/ 30 марта 2019

Да, контроллер плох в обновлении продукта. Вместо:

 model.addAttribute("producto", producto);

Запись:

 model.addAttribute("producto1", producto);

Потому что в тимиле вы указали его в th: object как producto1, а не как producto.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...