不懂就问,有什么办法可以全局共享一个从数据库取出来的集合

目前在一边学习Jfinal一边练手一个企业站,目前碰到的问题是,企业站的栏目是动态的,存储于数据库,页面是使用的enjoy渲染

#define cdsLayout()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
---------------
<li class="layui-nav-item"><a href="/enterColOtherArts?col=#(columns[0].enName)">#(columns[0].name)</a></li>

其他页面使用

  1. #include()

  2. 和  #@layout()  

引入头部文件,在访问首页的时候获取菜单栏,打开首页没问题,打开其他页面就会因为取值问题报错,我看了addSharedObject  但是不建议这种数据全局共享,练手的项目没有用ridis,除了session , 其他的办法有没有大佬有什么建议,

评论区

逍遥小妖

2021-03-20 10:25

未解决,但是有了方向,加缓存,码字中

糊搞

2021-03-22 09:22

@逍遥小妖 在数据库访问时使用findByCacheXXX(。。。)

糊搞

2021-03-22 09:42

@逍遥小妖 更新一下,你可将系统中用到的常用方法封装成系统Context对象,企业站的栏目就通过系统Context.获取企业栏目()方法获取,当前登录用户通过系统Context.获取当前用户()方法获取。在Config的afterJFinalStart方法中调用引擎的addSharedMethod(new 系统Context服务()),这样,系统Context就包装了页面上可随时使用的对象组合,使得使用上更加灵活。

逍遥小妖

2021-03-22 10:54

@糊搞 感谢,练手项目比较小,目前使用的是拦截器加缓存,但是我还是会试一试你的建议

INFECTION_K

2021-03-29 17:24

Interceptor 里面set一下

热门反馈

扫码入社