![名师讲坛:Java微服务架构实战(SpringBoot+SpringCloud+Docker+RabbitMQ)](https://wfqqreader-1252317822.image.myqcloud.com/cover/154/29977154/b_29977154.jpg)
上QQ阅读APP看书,第一时间看更新
3.6 内置对象操作支持
在模板页面中,最为常用的功能就是输出控制器传递的属性。为了方便用户开发,Thymeleaf支持内置对象的直接使用,也可以直接调用内置对象所提供的处理方法。
在通过控制器传递属性到Thymeleaf操作的时候,默认支持的属性获取范围为request(${属性名称})。如果要接收其他属性范围的内容,则需要指明范围,如session范围(${session.属性名称})、application范围(${application.属性名称})。
1.【mldnboot-thymeleaf项目】修改ThymeleafController控制器程序类,追加属性传递。本程序将传递request、session和application 3种属性范围的信息。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P45_10914.jpg?sign=1738843759-fsY8esvf9rsi5S3uBQl59BRAHH3Vpx8p-0-5575648293c411c2b30110bd00b1aaf5)
2.【mldnboot-thymeleaf项目】定义src/main/view/templates/message/message_attr.html页面,进行属性内容输出。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P45_10916.jpg?sign=1738843759-9MdeCZ7avIThBOQeZpuYYkXLqDTym4e6-0-3b2fcb015a58fcf8c9cb321f83b19d4e)
本程序在Thymeleaf模板页面中输出了控制器中传递的不同范围的属性内容。可以发现,只有request范围的属性可以直接通过表达式语法输出,而session与application范围的属性输出时,必须要有相应的范围标记,否则获取的内容就是null。本程序的执行结果如图3-8所示。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P46_2273.jpg?sign=1738843759-5KFmLuGtKkuXlksHER3YArMMo4TI9Pze-0-1aa917b99ee69eb9f8f41433ddf16f1c)
图3-8 Thymeleaf输出不同属性范围的信息
3.【mldnboot-thymeleaf项目】在Thymeleaf中也支持对内置对象的直接处理。修改message_attr.html页面,增加内置对象的方法调用。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P46_10918.jpg?sign=1738843759-p6FNAto4N2nRNhHUN1O3HfctEz2seNoO-0-f3a9f496b55d3f66f38909a0327f9fbc)
本程序利用内置对象提供的方法获取了IP地址、request属性、sessionId以及项目真实路径,程序运行结果如图3-9所示。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P46_2275.jpg?sign=1738843759-fIKByMvuPcZZ1geVya3wBcoajSn0GliY-0-9d8ce5fb65ddbcb12b9f4f29c3fca488)
图3-9 直接调用内置对象方法