Wednesday, February 23, 2011

纯JSF环境下通过Javascript触发表单提交的方法

在有ajax的环境中可以用partial submit解决,但在纯JSF环境下需要使用Javascript来触发表单提交。比如选择了selectOneList中的选项后需要触发提交并更新页面内容。例如选择了国家后显示出城市和区域等。


在JavaBean or action function中刷新当前页面的方法

FacesContext context = FacesContext.getCurrentInstance();
String viewId = context.getViewRoot().getViewId();
ViewHandler handler = context.getApplication().getViewHandler();
UIViewRoot root = handler.createView(context, viewId);
root.setViewId(viewId);
context.setViewRoot(root);

如果页面由于浏览器缓存的原因部分内容没有刷新,可以通过获取
HttpServletRespons,并在页面头添加no-cache参数。具体实现如下:


FacesContext facesContext = event.getFacesContext();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.addHeader("Cache-Control", "must-revalidate");