JFinal如何设置Response header “Cache-Control”

305575075 发布于 2017/03/21 16:25
阅读 603
收藏 0

使用JFinal开发了一套接口,客户端无法缓存数据。发现响应头中有如下两个字段值。

Pragma no-cache
Cache-Control no-cache

于是想通过如下代码修改响应头信息:

controller.getResponse().setHeader("Cache-Control","private")

结果运行后,发现响应头信息没有改变。不知这是什么原因?是不是Jetty需要如何配置?

加载中
0
JFinal
JFinal

jfinal 针对某些类型的 Render 实现类添加了 Cache-Control 的设置,不知道楼主使用的是哪个 render 时碰到了这个设计,扩展式方式通常有两种:

1:通过继承 Render,然后用的时候 render(new MyRender(...)) 来实现自定义的 render

2:通过一个 BaseController extends Controller,然后覆盖掉父类相应的 render 方法,将 render 切换成自己的 render 实现

0
305575075
305575075

感谢@JFinal耐心的解答,我的问题解决了。解决方法如下:

在BaseController中添加如下方法:

 

然后新建一个MyJsonRender类,代码copy自JsonRender(由于JsonRender中的字段是private的,不好扩展,就重新copy了一个类),只是render()方法中屏蔽掉头这设置代码:

返回顶部
顶部