apuntes:spring_web
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| apuntes:spring_web [2021/11/21 23:33] – [Procesar formularios] Santiago Faci | apuntes:spring_web [2021/11/21 23:43] (current) – [Relaciones entre clases] Santiago Faci | ||
|---|---|---|---|
| Line 258: | Line 258: | ||
| ===== Modelo de datos ===== | ===== Modelo de datos ===== | ||
| + | <code java> | ||
| + | @Data | ||
| + | @AllArgsConstructor | ||
| + | @NoArgsConstructor | ||
| + | @Entity(name = " | ||
| + | public class Product { | ||
| + | |||
| + | @Id | ||
| + | @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| + | private long id; | ||
| + | @Column | ||
| + | private String name; | ||
| + | @Column | ||
| + | private String description; | ||
| + | @Column | ||
| + | private String category; | ||
| + | @Column | ||
| + | private float price; | ||
| + | @Column | ||
| + | private LocalDateTime creationDate; | ||
| + | @Column | ||
| + | private String observations; | ||
| + | @Column | ||
| + | private int quantity; | ||
| + | } | ||
| + | </ | ||
| ==== Relaciones entre clases ==== | ==== Relaciones entre clases ==== | ||
| + | <code java> | ||
| + | @Data | ||
| + | @AllArgsConstructor | ||
| + | @NoArgsConstructor | ||
| + | @Entity(name = " | ||
| + | public class Product { | ||
| + | |||
| + | @Id | ||
| + | @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| + | private long id; | ||
| + | @Column | ||
| + | private String name; | ||
| + | @Column | ||
| + | private String description; | ||
| + | @Column | ||
| + | private String category; | ||
| + | @Column | ||
| + | private float price; | ||
| + | @Column | ||
| + | private LocalDateTime creationDate; | ||
| + | @Column | ||
| + | private String observations; | ||
| + | @Column | ||
| + | private int quantity; | ||
| + | | ||
| + | @ManyToOne | ||
| + | @JoinColumn(name = " | ||
| + | private User user; | ||
| + | @ManyToOne | ||
| + | @JoinColumn(name = " | ||
| + | private Category category; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code java> | ||
| + | @Data | ||
| + | @AllArgsConstructor | ||
| + | @NoArgsConstructor | ||
| + | @Entity(name = " | ||
| + | public class User { | ||
| + | |||
| + | @Id | ||
| + | @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| + | private long id; | ||
| + | @Column | ||
| + | private String dni; | ||
| + | @Column | ||
| + | private String name; | ||
| + | @Column | ||
| + | private String surname; | ||
| + | @Column(name = " | ||
| + | private LocalDate birthDate; | ||
| + | |||
| + | @OneToMany(mappedBy = " | ||
| + | private List< | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code java> | ||
| + | @Data | ||
| + | @AllArgsConstructor | ||
| + | @NoArgsConstructor | ||
| + | @Entity(name = " | ||
| + | public class Category { | ||
| + | |||
| + | @Id | ||
| + | @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| + | private long id; | ||
| + | @Column | ||
| + | private String name; | ||
| + | @Column | ||
| + | private String description; | ||
| + | @Column | ||
| + | private float discount; | ||
| + | |||
| + | @OneToMany(mappedBy = " | ||
| + | private List< | ||
| + | } | ||
| + | </ | ||
| + | ===== Gestión de errores ===== | ||
| + | |||
| + | <code java> | ||
| + | @RequestMapping(value = "/ | ||
| + | public String product(Model model, @PathVariable long id) throws ProductNotFoundException { | ||
| + | Product product = productService.findProduct(id); | ||
| + | model.addAttribute(" | ||
| + | return " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code java> | ||
| + | public class ProductNotFoundException extends Exception { | ||
| + | |||
| + | public ProductNotFoundException(String message) { | ||
| + | super(message); | ||
| + | } | ||
| + | |||
| + | public ProductNotFoundException() { | ||
| + | super(); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code java> | ||
| + | @ExceptionHandler(ProductNotFoundException.class) | ||
| + | public String handleException(HttpServletRequest request, ProductNotFoundException exception) { | ||
| + | return " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file html product_error.html> | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <p>El producto que intentas localizar no está disponible</ | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <code java> | ||
| + | @ExceptionHandler | ||
| + | public String handleException(HttpServletRequest request, Exception exception) { | ||
| + | return " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file html error.html> | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <p>La página que has solicitado no está disponible</ | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| ===== Plantillas. Thymeleaf ===== | ===== Plantillas. Thymeleaf ===== | ||
| Line 313: | Line 483: | ||
| === Formulario de búsqueda === | === Formulario de búsqueda === | ||
| - | ===== Contenido estático | + | ==== Contenido estático ==== |
| <code html> | <code html> | ||
apuntes/spring_web.1637537632.txt.gz · Last modified: 2021/11/21 23:33 by Santiago Faci