在学springboot的时候,发现一个bug。在controller返回到templates模板下的页面dashboard.html时,在页面上报了There was an unexpected error (type=Internal Server Error, status=500)。而在IDEA中发现报的错误为:
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [dashboard], template might not exist or might not be accessible by any of the configured Template Resolvers
controller层的代码如下:
@Controller
public class LoginController {
// @DeleteMapping
// @PutMapping
// @GetMapping
//@RequestMapping(value = "/user/login",method = RequestMethod.POST)
@PostMapping(value = "/user/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
Map<String,Object> map, HttpSession session){
if(!StringUtils.isEmpty(username) && "123456".equals(password)){
//登陆成功,防止表单重复提交,可以重定向到主页
session.setAttribute("loginUser",username);
return "dashboard";
// return "redirect:/main.html";
}else{
//登陆失败
map.put("msg","用户名密码错误");
return "login";
}
}
}
return给dashboard就会报错,但ruturn给其他的文件就可以。于是我就去检查dashboard.html和其他*.html文件的区别,发现dashboard.html文件的标签里面少了一段声明:xmlns:th="http://www.thymeleaf.org"
于是抱着试一试的态度,给加上了,代码如下。
<html lang="en" xmlns:th="http://www.thymeleaf.org">
刷新重启服务器后竟然正常转发了。。。。。。xmlns:th="http://www.thymeleaf.org"难道不是要在html页面使用thymeleaf框架时才加的声明吗?这样也可以!?待搞明白