主题:layout模板公用的情况下,title属性需要动态设置,请问如何实现

lcsaiya 2020年03月03日 38

layout模板公用的情况下,title属性需要动态设置,请问如何实现

moxzone 2020年03月03日

用include不行吗

lcsaiya 2020年03月04日

能详细说下么,第一次使用,看了文档,没太看明白,

我的情况是:我定义了一个公共页面,其他页面引用此公共页面,公共页面里面有title标签,并且通过Controller向其title标签赋值,其他页面都引用此<% layout("/layout/default.html"){ %>方法,目前是只有第一个打开的页面title成功被复制,再打开其他页面并且也引用了<% layout("/layout/default.html"){ %>方法,但是无法获取到title值

闲大赋 2020年03月04日

不太理解你说的。

layout可以传递参数,一个json格式:比如

<% layout("/layout/default.html",{"commonTitle":tilte}){ }

这样,default页面可以接受commonTitle作为参数

lcsaiya 2020年03月04日

你说的这个layout我是使用了,但是没有使用commonTitle参数,因为我是在/layout/default.html页面里面定义了一个title标签(<title>${titleName!}</title>),${titleName!}这个是从系统首次运行时从后台获取的,每个页面都会引用<% layout("/layout/default.html"){ %>,当首页打开时,${titleName!}被赋值了,但是当打开其他页面时,${titleName!}没有再被赋值了(如果我后台再次对titleName参数进行传值,才会再次被赋值,我不想每次打开新页面都进行赋值操作)

闲大赋 2020年03月05日

哦,那你可以把变量放到session里啊,比如用户登录的时候,后台代码

HttpSession session = 
session.setAttribute("title","你好 "+user.name);

这样,common页面

<title>${session.title}</title>
闲大赋 2020年03月05日

如果所有title都一样,可以参考beetl的共享变量, 只要设置一次,所有页面任何时刻都可以用,怎么设置取决于你的web框架,基本上是调用底层api,java代码如下

groupTemplate.getShared().put("title","xxxxx")