Thymeleaf在3.1(https://www.thymeleaf.org/doc/articles/thymeleaf31whatsnew.html)版中删除了#session#httpServletRequest等模板表达式.

我们在相对较大的应用程序中大量使用这些应用程序.我编写了一个拦截器来在每个请求时填充这些属性,因为我不想将它们添加到每个需要的控制器中(如迁移指南中所述).

有谁知道更好的实现这一点的方法吗?

推荐答案

我了解到在这种情况下可以使用@ControllerAdvice(见https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc).

@ControllerAdvice注解的类可以有用@ModelAttribute注解的方法,以填充multiple个控制器的属性(如果没有另外指定,则所有这些控制器).

在我的 case 中:

@ControllerAdvice
public class CommonDataAdvice {
     @Autowired
     private HttpServletRequest request;

     @ModelAttribute("request")
     public HttpServletRequest populateRequest(){
           return request;
     }
}

Java相关问答推荐

查找最大子数组的和

方法没有用正确的值填充数组—而是将数组保留为null,'

inteliJ中是否有一个功能可以自动在块注释中的/*后面添加一个空格?''

Jlink选项&-strie-ative-Commands";的作用是什么?

无法使用Java&;TestContainers获取AWS SQS队列的属性

用户填充的数组列表永不结束循环

使用存储在字符串变量中的路径目录打开.pdf文件

Java堆中的许多java.time.ZoneRegion实例.ZoneId实例不应该被缓存吗?

如何在Java springboot中从一个端点发送多个时间响应?

将stringBuilder + forloop转换为stream + map

从泛型枚举创建EnumMap

JavaFX:无论何时显示应用程序,如何更改组件/ node 位置?

在权限列表中找不到我的应用程序

为什么没有加载java.se模块?

rest api服务 spring 启动中出现IllegalFormatConversionException

如何在单元测试中获得我的装饰Mapstruct映射器的实例?

升级版本后出现非法访问错误

如何正确使用java.time类?

获取月份';s在java中非UTC时区的开始时间和结束时间

如何在java中从以百分比表示的经过时间和结束日期中找到开始日期