Я работаю над упражнением, которое имитирует магазин, но при печати на экране опция добавления товаров не работает. Распечатайте белую ошибку:
Страница ошибки 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>