hes*_*ham 3 jsf browser-cache primefaces jsf-2
我有jsf网页,这需要从以前的页面查询一些字符串.
我的问题是这个主页似乎有缓存的值,没有变化即使我将这些值更改为null,它应该得到空页但它变得更旧的值.
所以我的问题是:每当我调用它或按F按钮时,如何让我的主jsf页面重新加载或缓存被删除?
我试过的JSF示例代码:
<h:head style="width: 200px; ">
<f:facet name="first">
<meta http-equiv="X-UA-Compatible" content="edge, chrome=1" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
</f:facet>
Run Code Online (Sandbox Code Playgroud)
java类:
String SID = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("SID");
String from = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("from");
String to = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("to");
String class_id = FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap().get("class_id");
if (SID==null) {
try {
Dbconnection NewConnect = new Dbconnection();
Connection con = NewConnect.MakeConnect();
Statement stmt = con.createStatement();
ResultSet rs = stmt
.executeQuery("SELECT a.course_id, a.teacher_id, a.class_id, a.day_id, a.state, a.apssent_date, a.interval_id,s.student_id,s.first_name FROM student AS s INNER JOIN apsent AS a ON s.student_id = a.student_id where apssent_date between '"
+ from
+ "' and '"
+ to
+ "' and a.class_id = "
+ Integer.parseInt(class_id));
while (rs.next()) {
ids.add(rs.getInt(8));
names.add(rs.getString(9));
intervals.add(rs.getInt(7));
teachers.add(rs.getInt(2));
dates.add(rs.getString(6));
state.add(rs.getString(5));
}
} catch (Exception ex) {
System.out.println(ex);
}
}
System.out.println(SID + from + class_id + to);
if (class_id==null) {
try {
Dbconnection NewConnect = new Dbconnection();
Connection con = NewConnect.MakeConnect();
Statement stmt = con.createStatement();
ResultSet rs = stmt
.executeQuery("SELECT a.course_id, a.teacher_id, a.class_id, a.day_id, a.state, a.apssent_date, a.interval_id,s.student_id,s.first_name FROM student AS s INNER JOIN apsent AS a ON s.student_id = a.student_id where apssent_date between '"
+ from
+ "' and '"
+ to
+ "' and s.student_id = " + SID);
while (rs.next()) {
// System.out.println(rs.getInt(1));
ids.add(rs.getInt(8));
names.add(rs.getString(9));
intervals.add(rs.getInt(7));
teachers.add(rs.getInt(2));
dates.add(rs.getString(6));
state.add(rs.getString(5));
}
} catch (Exception ex) {
System.out.println(ex);
}
}
carsSmall = new ArrayList<Car>();
populateRandomCars(carsSmall, ids.size(), ids, names,
intervals, teachers, dates, state);
Run Code Online (Sandbox Code Playgroud)
}
在<meta http-equiv>当有问题的HTML文件被从非HTTP资源开如本地磁盘文件系统(通过标签只用来file://URI),而不是在有问题的HTML文件被从一个真实的HTTP资源打开(通过http://URI) .相反,使用了设置为via的真实HTTP响应头HttpServletResponse#setHeader().
因此,在您的JSF页面的情况下,这些标记仅在webbrowser中打开JSF页面时解释,并且其HTML输出由最终用户通过webbrowser的文件>另存为保存到HTML文件,然后通过双击保存的文件重新打开在文件资源管理器中.
因此,可能会导致您的具体问题,因为这些<meta http-equiv>标记会被忽略.您需要在HTTP响应中直接设置这些标头,而不是在HTML头中.您可以使用servlet过滤器.在下面的"另请参见"链接中,您可以找到具体的代码示例.
与具体问题无关,您的JDBC代码正在泄漏资源.这是一个严重的问题.一段时间后,您的JDBC将停止运行.不要忘记解决这个问题.
| 归档时间: |
|
| 查看次数: |
10420 次 |
| 最近记录: |