频道
bg

Thymeleaf Layout的共通逻辑

coding二月 11, 20161mins
Spring Thymeleaf

使用Thymeleaf的Layout Dialect时会遇到layout页面本身也有一些动态逻辑的情况。对于Spring MVC的情况,大概有这么几个解决方案。

使用公共的@ModelAttributes方法H2

把这些layout页面的数据放到@ModelAttributes中,这样所有调用到@ModelAttributes方法的Model中都会包含这些信息,就能够在layout中使用了。 但为了确保@ModelAttributes方法被调用到,需要通过继承或者@ControllerAdvice来实现。需要注意的是只应该对有页面渲染的Controller进行继承,那些Json/Download请求应该被跳过。

从模板调用Controller方法H2

把layout对应的Model对象直接通过Controller方法返回对象。然后在模板中通过th:with="[email protected]()"来调用Controller方法并设置到本地变量中。这样相关于layout页面有了自己的单独的Controller。 这样做的另外的好处是,如果出于一些用户体验的考虑,这个方法可以通过ajax被异步调用。从这个角度考虑,也可以把直接在模板中的调用理解成一次同步调用。

评论


新的评论

匹配您的Gravatar头像

Joen Yu

@2022 JoenYu, all rights reserved. Made with love.