我正在使用一个简单的项目测试Spring启动,并且我在post方法上有一个TemplateInputException。
这是我的控制器:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.astrea.annuaire.domain.User;
@Controller
@RequestMapping("/annuaire")
public class AnnuaireController {
@RequestMapping(method = RequestMethod.GET)
public String main(Model model) {
model.addAttribute("user", new User());
return "connection";
}
@RequestMapping(method = RequestMethod.POST)
public String connection(@ModelAttribute User user, Model model) {
System.out.println("Connection attempted by " + user.toString());
return null;
}
}
这是我的用户类:
public class User {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
这是我的connection.html文件:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Connexion</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form action="#" th:action="@{/annuaire}" th:object="${user}" method="post">
<input type="text" name="pseudo" th:field="*{name}" placeholder="Nom d'utilisateur" />
<input type="password" name="pwd" th:field="*{password}" placeholder="Mot de passe" />
<input type="submit" name="valider" value="Se connecter"/>
</form>
</body>
</html>
这是我的pom:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
GET方法(名为main)成功运行,但是当我提交表单时,我发现了这个错误:
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "annuaire", template might not exist or might not be accessible by any of the configured Template Resolvers
有什么想法吗?
答案 0 :(得分:0)
当你返回null
时,Spring会将其解释为&#34;找出我的视图名称&#34;并将请求URL转换为视图。从而POST /annuaire
成为&#34; annuaire&#34;和Spring尝试渲染该模板。
所以你需要做一些不同的事情,有几个选择:
HttpServletResponse
参数。 Spring会推断您自己处理了响应,而不是尝试渲染视图。ResponseEntity<?>
以明确处理回复。"redirect:<redirect-url>"
重定向。最后一个可能最有意义; "redirect:/annuaire"
会将浏览器发送回您的表单。