IDEA中使用Thymeleaf模板$表達(dá)式報(bào)錯(cuò)
問(wèn)題描述
使用SpringBoot開(kāi)發(fā)項(xiàng)目蟀给,在html文件中使用Thymeleaf模板别厘,需要使用表達(dá)式出現(xiàn)紅色波浪線(xiàn)報(bào)錯(cuò)旁赊,且表達(dá)式未生效桦踊,頁(yè)面無(wú)法正常顯示。
*版權(quán)聲明:本文為博主原創(chuàng)文章终畅,禁止轉(zhuǎn)載
作者博客:codesong.cn
created: 2019-11-18 *
采用Spring MVC設(shè)計(jì)籍胯,controller層和HTML文件部分代碼如下:
controller層代碼:
@Controller
public class HomeController {
@Autowired
...
@RequestMapping(path = "/index", method = RequestMethod.GET)
public String getIndexPage(Model model) {
List<DiscussPost> list = discussPostService.findDiscussPosts(0,0,10);
List<Map<String, Object>> discussPosts = new ArrayList<>();
if(list != null) {
for (DiscussPost post: list) {
Map<String, Object> map = new HashMap<>();
map.put("post", post); //裝入帖子
User user = userService.findUserById(post.getUserId());
map.put("user", user); //裝入用戶(hù)
discussPosts.add(map);
}
}
model.addAttribute("discussPosts", discussPosts); //填充對(duì)象
return "/index";
}
}
代碼最后部分,在model中填充一個(gè)集合對(duì)象discussPosts
HTML代碼:
多處$表達(dá)式報(bào)錯(cuò)离福,且編譯運(yùn)行后杖狼,網(wǎng)頁(yè)不能顯示內(nèi)容,模板解析發(fā)生錯(cuò)誤术徊。
問(wèn)題分析
雖然在后端的model中填充了對(duì)象的數(shù)據(jù)信息本刽,但是程序并沒(méi)有運(yùn)行,因此赠涮,前端HTML文件無(wú)法感知到填充的model對(duì)象(鼠標(biāo)放在紅色波浪線(xiàn)處會(huì)提醒Cannot resolve...)子寓。IDEA默認(rèn)要對(duì)Thymeleaf的數(shù)據(jù)進(jìn)行驗(yàn)證,所以會(huì)出現(xiàn)報(bào)錯(cuò)笋除。
因此我們只需將IDEA的Thymeleaf數(shù)據(jù)驗(yàn)證關(guān)閉即可斜友。
解決方法
關(guān)閉IDEA的Thymeleaf表達(dá)式數(shù)據(jù)驗(yàn)證(Expression variables validation)
此時(shí)再查看HTML代碼中的Themeleaf表達(dá)式,發(fā)現(xiàn)不在報(bào)錯(cuò)垃它,運(yùn)行程序可以查看到正確的網(wǎng)頁(yè)鲜屏,問(wèn)題解決。
除此方法以外国拇,還可以通過(guò)壓縮HTML中文件的警告洛史、對(duì)報(bào)錯(cuò)單獨(dú)注解等方法解決此問(wèn)題,不過(guò)這兩種方法都有一定的局限性酱吝,且操作麻煩也殖,本文不再介紹。另外兩種方法參考鏈接:https://blog.csdn.net/niuniu1994/article/details/83245743