thymeleaf 调用java,thymeleaf模板引擎调用java类中的方法(附源码)
前言
由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决,有的是把问题留在项目的issue里提出,有的是在我的私人博客里留言,还有的则是直接添加我的qq来找我讲自己遇到的问题,有些问题比较简单直接就解决了,有些问题的解决记录也留在issue记录里,有些则是网上有相关教程,至于问题的解决方案,如果时间允许我也会单独的做一篇博客来介绍和解答。
本文中的示例代码地址在:springboot-thymeleaf,希望大家多多支持。
问题分析
在My Blog项目的issue页面收到了这个问题,issue描述的是关于如何在thymeleaf模板页面中如何调用java类中的方法,问题描述如下截图:
但是只有截图,并没有报错原因及错误截图之类的有效信息,那哥们儿也没留下其他的信息,因此只能自己去模拟并试着去解决和分析这个问题,由issue描述可以得出异常信息:
Attempted to call method test() on null context object
从这条异常信息可以大致得出一个答案,调用的test()方法处于一个空对象中,即context域中并没有对应的java实例,因此无法调用。
当天也就回复了这个issue,给出的答案如下:
thymeleaf 的context,即提供数据的地方,基于web的context,即WebContext相对context增加 param,session,application变量,并且自动将request atttributes添加到context variable map,可以在模板直接访问。
虽然给出了答案,但是较为理论派,而且也没有复现此bug,因此又按照issue中的描述重新建了一个springboot+thymeleaf的项目,并且试着重现此问题并解决。
问题重现
重新编写了代码,没有把调用的java实例放入request对象中,重现代码如下:
public class MethodTestController {
@RequestMapping("/test1")
public String test1(HttpServletRequest request) {
return "test";
}
}
最终将此问题重现:
将此问题重现后,我又想,如果调用的方法为空会报什么错误呢?试着写了一下:
得到了如下的报错:
两个异常分别是:
异常1 :
Attempted to call method on null context object
调用的方法处于一个空对象中,即调用实例为空。
异常2 :
Method cannot be found
方法不存在
这两个异常都属于org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression异常。
问题解决方案
分析至此,异常出现的问题已经无比清晰:
针对于异常1,需要将期望调用的java实例存入thymeleaf的context域中,代码层面即为:将实例对象存入Request对象中。
针对于异常2,则更加简单,仔细检查代码,不要写错调用方法名即可,不要使用未定义的方法。
结语
代码和这次的问题都是My Blog项目中的,如果你想继续了解该项目可以到我的GitHub仓库或者开源中国代码仓库中查看源码及详细的部署过程和使用文档。
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中虽不甘心,却又畏首畏尾。
thymeleaf 调用java,thymeleaf模板引擎调用java类中的方法(附源码)相关推荐
- Java毕设项目菜鸟驿站快递分发系统计算机(附源码+系统+数据库+LW)
Java毕设项目菜鸟驿站快递分发系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...
- Java毕设项目校园外卖系统Web端计算机(附源码+系统+数据库+LW)
Java毕设项目校园外卖系统Web端计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...
- java计算机毕业设计ssm社区团购系统13kbd(附源码、数据库)
java计算机毕业设计ssm社区团购系统13kbd(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- java计算机毕业设计广东省梅州市宇恒节能科技有限公司(附源码、数据库)
java计算机毕业设计广东省梅州市宇恒节能科技有限公司(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...
- Java毕设项目餐厅线上点菜系统计算机(附源码+系统+数据库+LW)
Java毕设项目餐厅线上点菜系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- JAVA计算机毕业设计东理咨询交流论坛计算机(附源码、数据库)
JAVA计算机毕业设计东理咨询交流论坛计算机(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...
- Java毕设项目东理咨询交流论坛计算机(附源码+系统+数据库+LW)
Java毕设项目东理咨询交流论坛计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- java计算机毕业设计高校体育器材及场地管理(附源码、数据库)
java计算机毕业设计高校体育器材及场地管理(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...
- java计算机毕业设计高校教师个人主页网站设计与实现(附源码、数据库)
java计算机毕业设计高校教师个人主页网站设计与实现(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ E ...
最新文章
- 2015年6月9日_诗词学习
- c 后台输出easyui html,EasyUI——实现展示后台数据代码
- art-template-loader:template
- 24 个好用到爆的 Python 实用技巧!
- git 忽略文件不起作用
- 一步步用ABAP Development Tools连接SAP云平台上的ABAP编程环境
- 三、Eclipse快捷键
- shell复习笔记----命令与参数
- iot nb 曹淑敏 鹰潭_移动物联时代来啦 鹰潭一项成就为全球首个 江西力争在全国“四个领先”...
- 中剪取一种颜色的板块_不知道UI设计中APP界面版式如何排版?来看这个!
- 中小学计算机听课记录表,小学数学听课记录范文表格
- tl r402路由器设置_tp-link TL-WR700N 迷你型路由器设置记录
- linux java解压文件怎么打开,linux下面的解压缩文件的命令
- datetime插入数据_量化学习:聚宽jqdatasdk对接vnpy的数据服务
- 第一次使用vim遇到的问题及常用方法
- OBS开源免费桌面视频直播工具/直播推流工具使用指南
- Java 姓名脱敏的一点点改进 针对大于三个字 或叠字
- deepin 15.3 安装“Chrome Flash插件”折腾记
- 架构师评价当前软件行业现状及发展前景
- android 流媒体 播放器 项目 源码
热门文章
- matlab 报错 保留变量,matlab中明明定义了函数变量总是报错
- 如何从频域的角度解释CNN(卷积神经网络)?
- 世界各国的会计年度、记账本位币
- 李嘉诚的个人资料及简介「非常详细」
- C# lambda
- jupyter notebook 命令行运行时自定义目录
- 末日生存正在连接服务器,地球末日:生存无法连接服务器如何解决
- 没正常关机自动修复此计算机咋办,Win10非正常关机使用自动修复陷入无限重启该怎么办...
- 橡皮擦-背景色橡皮擦-魔术橡皮擦
- 基于Python+Vue+Mysql实现(物联网)智能大棚【100010340】