这个bug调了一段时间,一直怀疑是自己写错了,后来才知道是th:replace在传值的时候,只在第一个传递,后面的th:replace不能传递值。

代码大概是这样的

<div th:replace="commons/bar :: topbar"></div>
<div th:replace="commons/bar :: sidebar(active='emps')"></div>

结果后端怎么都拿不到这个active,更别提还需要这个值进行判断,我就尝试了各种办法,完全不晓得哪里出错了,后来尝试给第一个replace赋一个值看看是否也是这样,惊奇的发现第一个竟然能够获得

是这样的

<div th:replace="commons/bar :: topbar(x='123')"></div>
<div th:replace="commons/bar :: sidebar(active='emps')"></div>

然后x的值明明白白的显示在屏幕上,我心里很多问号,我以为是thymeleaf有bug什么的,再经过几次尝试发现只有在代码中第一个replace处才可以传递值,在后面都没有效果,所以正确的代码是

<div th:replace="commons/bar :: topbar(active='emps')"></div>
<div th:replace="commons/bar :: sidebar"></div>

成功!兴奋和吐血的感觉。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐