一、遇到的问题
在做Springboot 图书管理系统时登录验证已写好点击登录时报错An error happened during template parsing (template: "class path resource [templates//user/index.html]")
二、分析问题
起初以为是重定向中或者@PostMapper注解写多了一个 “ / ”。
(修改后,发现无论z在user前加一个 “ / ” ,还是去掉user前面的 “ / ” 依旧还是报错 )
随后在后端控制台中发现一个报错
Property or field 'username' cannot be found on object of type 'java.lang.String' - maybe not public or not valid?
(在类型为“java.lang.String”的对象上找不到属性或字段“username” - 可能不是公共的或无效的?
)
传递给username这个属性 前端找不到
前端界面·
对应的代码 thymeleaf获取不到username属性,发现是没有设置从那个对象获取
看看了自己的业务代码 发现是从session传值的
@PostMapping("/login")
public String login(LoginForm loginForm, Model model, HttpSession session){
LoginResult result = loginService.login(loginForm);
String url = "";
if (result.getCode().equals(-1) || result.getCode().equals(-2)){
model.addAttribute("msg",result.getMsg());
url = "login";
}
if (result.getCode().equals(0)){
switch (loginForm.getType()){
case "1":
session.setAttribute("user",(User)result.getObject());
break;
case "2":
session.setAttribute("admin",(Admin)result.getObject());
break;
case "3":
session.setAttribute("sysadmin",(Sysadmin)result.getObject());
break;
}
url = "redirect:/user/index";
}
return url;
}
三、解决方法
所以将前端代码改成从session中获取对象即可
四、总结
可能是后端业务数据源没有和前端对应起来。