【发布时间】:2021-11-13 19:09:04
【问题描述】:
我在尝试使用 PostMapping 更新对象时遇到此异常:
引起:org.thymeleaf.exceptions.TemplateProcessingException: 评估 SpringEL 表达式的异常:“libro.id”(模板: “formulario-modificar-libros-p” - 第 18 行,第 15 列)
原因: org.springframework.expression.spel.SpelEvaluationException:EL1007E: 在 null 上找不到属性或字段“id”
表格:
<form th:action="@{/libros/modificar-libro-d/__${libro.id}__}" method="post">
<input hidden th:value="${libro.id}" name="id">
<div class="form-group">
<label>ISBN del libro</label> <input th:value="${libro.isbn}" type="number" class="form-control" name="isbnLibro" required>
</div>
<div class="form-group">
<label>Título del libro</label> <input th:value="${libro.titulo}" type="text" class="form-control" name="tituloLibro" required>
</div>
<div class="form-group">
<label>Año del libro</label> <input th:value="${libro.anio}" type="number" class="form-control" name="anioLibro">
</div>
<div class="form-group">
<label>Ejemplares del libro</label> <input th:value="${libro.ejemplares}" type="number" class="form-control" name="ejemplaresLibro" required>
</div>
<div>
<label>Autor</label>
<select class="form-select" aria-label="Default select example" name="nombreAutor">
<option th:each="autor:${autores}"
th:text="${autor.nombre}"
th:value="${autor.nombre}"
>
</option>
</select>
</div>
<div>
<label>Editorial</label>
<select class="form-select" aria-label="Default select example" name="nombreEditorial">
<option th:each="editorial:${editoriales}"
th:text="${editorial.nombre}"
th:value="${editorial.nombre}"
>
</option>
</select>
</div>
<button type="submit" class="btn btn-primary">Aceptar</button>
</form>
控制器
@PostMapping("/modificar-libro-d/{id}")
public String modificarLibroM(@PathVariable String id, @RequestParam Long isbnLibro, @RequestParam String tituloLibro, @RequestParam Integer anioLibro,
@RequestParam Integer ejemplaresLibro, @RequestParam String nombreAutor, @RequestParam String nombreEditorial){
try {
libroServicio.modificarLibro(id, isbnLibro, tituloLibro, anioLibro, ejemplaresLibro, nombreAutor, nombreEditorial);
return "redirect:/libros/lista-libros-d";
} catch (Exception e) {
return "formulario-modificar-libros-p";
}
}
@GetMapping("/modificar-libro-d/{id}")
public String formularioModificarLibrosM(@PathVariable String id, ModelMap modelo) {
modelo.addAttribute("libro", libroServicio.buscarLibroPorId(id));
modelo.addAttribute("autores", autorServicio.listarAutoresAlta());
modelo.addAttribute("editoriales", editorialServicio.listarEditorialesAlta());
return "formulario-modificar-libros-p";
}
在实体中,所有字段都有正确的getter和setter。
【问题讨论】:
-
您好,这看起来像是重复的。问题不在于您的实体是如何定义的,而在于它看起来不像“libro”的模型属性
-
我想我在@GetMapping 中添加了属性“libro”,编辑后
标签: java spring-boot thymeleaf