春季百里香叶问题:异常处理模板



我正在用spring和thymeleaf构建一个简单的Web服务。这就是现在的代码: 控制器:

package com.Basi.CheBBellaEmittente.Pages.Control;

@Controller
public class SimpleController {
@GetMapping("/nuovo-utente")
public String viewInserisciUtente(Model model){
model.addAttribute("nuovoUtente", new Utente());
return "nuovo-utente";
}
@PostMapping("/nuovo-utente")
public void memorizzaUtente(@ModelAttribute Utente utente){
System.out.println(utente.getId());
}
}

型:

package com.Basi.CheBBellaEmittente.Pages.Model;
public class Utente {
private String id;
private String citta=null;
private String genere;
private String data_nascita=null;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCitta() {
return citta;
}
public void setCitta(String citta) {
this.citta = citta;
}
public String getGenere() {
return genere;
}
public void setGenere(String genere) {
this.genere = genere;
}
public String getData_nascita() {
return data_nascita;
}
public void setData_nascita(String data_nascita) {
this.data_nascita = data_nascita;
}
}

网页:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Inserisci un nuovo utente</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Form</h1>
<form action="#" th:action="@{/nuovo-utente}" th:object="${com.Basi.CheBBellaEmittente.Pages.Model.Utente}" method="post">
<p>Id: <input type="text" th:field="*{id}" /></p>
<p>Città: <input type="text" th:field="*{citta}" /></p>
<p>Genere: <input type="text" th:field="*{genere}" /></p>
<p>Data nascita: <input type="text" th:field="*{data_nascita}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
</body>
</html>

和错误:

2018-09-21 16:51:40.668 ERROR 3132 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "nuovo-utente": Exception evaluating SpringEL expression: "com.Basi.CheBBellaEmittente.Pages.Model.Utente" (template: "nuovo-utente" - line 9, col 51)

那么,我该怎么做才能处理这种情况呢?我不知道这有什么问题,是一个非常简单的代码。你能给我一些建议吗?我假设是一些折叠包问题,但我不明白是什么。

由于您的模型属性被命名为nuovoUtente--model.addAttribute("nuovoUtente", new Utente());,这就是您应该用作 th:object 的属性。

<form action="#" th:action="@{/nuovo-utente}" th:object="${nuovoUtente}" method="post">

像这样的表达式:${com.Basi.CheBBellaEmittente.Pages.Model.Utente}将被解释为:com.getBasi().getCheBBellaEmittente().getPages().getModel().getUtente()- 这没有意义。

在控制器中,您将模型属性的名称设置为 nuovoUtente,因此您必须在 html 上执行下一步操作:

<form action="#" th:action="@{/nuovo-utente}" th:object="${nuovoUtente}" method="post">

您想要创建并提交表单。在@GetMapping和@PostMapping上,您必须设置不同的URL。

例如:

@GetMapping(/nuevo-utente-form( 和 @PostMapping(/nuevo-utente(

在 nuevo-utetente 表单中.html编写表单的代码,在新 utente 中.html编写用于接受表单的代码。

th:object="${com.Basi.CheBBellaEmittente.Pages.Model.Utente}"

它应该指向您在视图模型中传递的实际对象实例,而不是它的类,所以可能

th:object="${utente}"

是它应该的样子。

最新更新