进行的项目中遇到这样的问题,我的每一个连接都是连接一台服务器,点击一个连接时候刷新Iframe里页面配置一些参数,切换到另一个服务器连接的时候,Iframe里面列表依然显示着上一台服务器数据列表情况,bean数据没有清空。
在网上查了些资料,方法大概如下:
方案一
在head里添加信息,好像不起作用,可能和bean范围有关,没有细究
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache,must-revalidate" />
<meta http-equiv="expires" content="Wed,26 Feb 1997 08:21:57 GMT" />
方案二
利用filter,很好的思路
One of the most annoying problems with building dynamic websites is how to control page cache.
The most used solution is to use a <meta content=”no-cache” http-equiv=”Pragma”/> tag inside the <HEAD> tag. Voilà, problem solved. Wrong! For two reasons:
1. It’s HTML, (most) proxy servers will still cache your pages since they don’t read HTML
2. The HTTP specification does not set any guidelines for Pragma response headers; instead, Pragma request headers are discussed.
Although a few caches may honor this header, the majority won’t, and it won’t have any effect.
However, true HTTP headers are almost always obeyed by any cache. With ADF Faces / JSF it is quite easy to gain control over your caching strategies with a phaselistener:
package nl.iteye.utils;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpServletResponse;
public class NoCachePhaseListener implements PhaseListener {
public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}
public void afterPhase(PhaseEvent phaseEvent) {
}
public void beforePhase(PhaseEvent phaseEvent) {
FacesContext facesContext = phaseEvent.getFacesContext();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.addHeader(“Pragma”, “no-cache”);
response.addHeader(“Cache-Control”, “no-cache”);
response.addHeader(“Cache-Control”, “no-store”);
response.addHeader(“Cache-Control”, “must-revalidate”);
response.addHeader(“Expires”, “Mon, 1 Jan 2006 05:00:00 GMT”);//in the past
}
}
And don’t forget to add the viewhandler to the faces-config.xml within the <lifecycle> tag : <phase-listener>nl.iteye.utils.NoCachePhaseListener</phase-listener> to make this magic work!
方案三
每次连接之前,代码清除bean
TestBean tBean=((TestBean)FacesUtils.getManagedBean("testBean"));
tBean.tlists = null;
分享到:
相关推荐
至于提供的文件列表,它们看似与JSF禁用浏览器缓存的主题不直接相关,但可能是与学习或教学相关的文档,如"Lesson 1 Building and Running 'Hello, World!' .doc"可能是JSF入门教程的一部分,而"OAF.ppt"可能是关于...
- **Cache-Control**: 设置为`no_cache`,禁止客户端缓存该文件。 - **Pragma**: 设置为`no_cache`,兼容旧版浏览器的缓存控制。 - **Content-Transfer-Encoding**: 设置为`binary`,表示文件是以二进制形式传输。 -...
- HTTP缓存策略:设置合适的Cache-Control、ETag等头信息,利用客户端缓存。 5. **JavaWeb中的静态资源处理**: - Tomcat等Servlet容器默认支持静态资源服务,无需编写额外代码。 - Spring Boot提供自动配置,...
<meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" ...
Spring提供了IOC(Inversion of Control)和AOP(Aspect Oriented Programming)功能,而Hibernate则是一个强大的ORM(Object-Relational Mapping)工具,它们降低了对EJB的依赖。 2. **Web层技术**:书中可能会...
- 集群配置标签的详细介绍,包括集群相关的各种配置项,如 <access-log>、<cache>、<cluster> 等。 - **Resource Tags** - 资源配置标签,包括数据库连接池、邮件服务等资源的配置。 - **Rewrite Dispatch** - ...
这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) spring-webmvc.jar 这个...
Spring的核心在于IoC(Inversion of Control)容器,它管理着应用对象的生命周期和依赖关系。Beans模块是Spring的基础,定义了如何配置和管理这些对象。XML配置文件或Java配置类可以用来声明bean及其依赖,容器根据...
这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及...