当前位置: 首页 > news >正文

普洱市网站建设制作html购物网站模板

普洱市网站建设制作,html购物网站模板,网站开发技术项目说明书,网站seo外包服务jsf标签p:ajaxJSF AJAX请求的会话超时处理 当我们使用AJAX行为开发JSF应用程序时#xff0c;在处理Ajax请求的超时情况时#xff0c;我们可能会遇到问题。 例如#xff0c;如果您使用的是基于J2EE Form的身份验证#xff0c;则会话超时后应将正常请求重定向到登录页… jsf标签p:ajax JSF AJAX请求的会话超时处理 当我们使用AJAX行为开发JSF应用程序时在处理Ajax请求的超时情况时我们可能会遇到问题。 例如如果您使用的是基于J2EE Form的身份验证则会话超时后应将正常请求重定向到登录页面。 但是如果您的请求是AJAX则无法在客户端正确处理响应。 用户将保留在同一页面上并且不知道会话已过期。 许多人为此问题提出了解决方案。 以下是涉及使用Spring安全框架的两种可能的解决方案 1. Oleg Varaksin的帖子 2. Spring Security 3和ICEfaces 3教程 但是某些应用程序可能只是使用简单的机制将其身份验证和授权信息存储在会话中。 对于那些不使用Spring Security框架的应用程序他们如何处理此类问题 我刚刚修改了Oleg Varaksin提出的解决方案作为我的参考。 首先创建一个名为“ MyJsfAjaxTimeoutSetting”的简单会话范围内的JSF托管bean。 该POJO的主要目的仅仅是允许您在faces-config.xml中的会话超时后配置重定向URL。 如果您不希望配置超时URL则可能不需要此类。 public class MyJsfAjaxTimeoutSetting {public MyJsfAjaxTimeoutSetting() {}private String timeoutUrl;public String getTimeoutUrl() {return timeoutUrl;}public void setTimeoutUrl(String timeoutUrl) {this.timeoutUrl timeoutUrl;}} 其次创建一个PhaseListener来处理Ajax请求的重定向。 这个PhaseListener是解决方案中最重要的部分。 它重新创建响应以便超时后可以重定向Ajax请求。 import org.borislam.util.FacesUtil; import org.borislam.util.SecurityUtil; import java.io.IOException; import javax.faces.FacesException; import javax.faces.FactoryFinder; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener; import javax.faces.render.RenderKit; import javax.faces.render.RenderKitFactory; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.primefaces.context.RequestContext;public class MyJsfAjaxTimeoutPhaseListener implements PhaseListener {public void afterPhase(PhaseEvent event){}public void beforePhase(PhaseEvent event){ MyJsfAjaxTimeoutSetting timeoutSetting (MyJsfAjaxTimeoutSetting)FacesUtil.getManagedBean(MyJsfAjaxTimeoutSetting);FacesContext fc FacesContext.getCurrentInstance();RequestContext rc RequestContext.getCurrentInstance();ExternalContext ec fc.getExternalContext();HttpServletResponse response (HttpServletResponse) ec.getResponse();HttpServletRequest request (HttpServletRequest) ec.getRequest();if (timeoutSetting null) {System.out.println(JSF Ajax Timeout Setting is not configured. Do Nothing!);return ;}UserCredential user SecurityUtil.getUserCredential(); //// You can replace the above line of code with the security control of your application.// For example , you may get the authenticated user object from session or threadlocal storage.// It depends on your design.if (usernull) {// user credential not found. // considered to be a Timeout caseif (ec.isResponseCommitted()) {// redirect is not possiblereturn;}try{if ( ( (rc!null RequestContext.getCurrentInstance().isAjaxRequest())|| (fc!null fc.getPartialViewContext().isPartialRequest())) fc.getResponseWriter() null fc.getRenderKit() null) {response.setCharacterEncoding(request.getCharacterEncoding());RenderKitFactory factory (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);RenderKit renderKit factory.getRenderKit(fc,fc.getApplication().getViewHandler().calculateRenderKitId(fc));ResponseWriter responseWriter renderKit.createResponseWriter(response.getWriter(), null, request.getCharacterEncoding());fc.setResponseWriter(responseWriter);ec.redirect(ec.getRequestContextPath() (timeoutSetting.getTimeoutUrl() ! null ? timeoutSetting.getTimeoutUrl() : )); }} catch (IOException e) {System.out.println(Redirect to the specified page timeoutSetting.getTimeoutUrl() failed);throw new FacesException(e);}} else {return ; //This is not a timeout case . Do nothing !}}public PhaseId getPhaseId(){return PhaseId.RESTORE_VIEW;}} FacesUtil.getManagedBeanMyJsfAjaxTimeoutSetting的详细信息如下所示 public static Object getManagedBean(String beanName) {FacesContext fc FacesContext.getCurrentInstance();ELContext elc fc.getELContext();ExpressionFactory ef fc.getApplication().getExpressionFactory();ValueExpression ve ef.createValueExpression(elc, getJsfEl(beanName), Object.class);return ve.getValue(elc); } 组态 如前所述会话作用域受管bean MyJsfAjaxTimeoutSetting的目的只是为了使您可以在faces-config.xml中配置timeoutUrl。 managed-bean managed-bean-nameMyJsfAjaxTimeoutSetting/managed-bean-name managed-bean-classorg.borislam.security.MyJsfAjaxTimeoutSetting/managed-bean-class managed-bean-scopesession/managed-bean-scope managed-property property-nametimeoutUrl/property-name value/login.do/value /managed-property /managed-bean 最重要的是将PhaseListener添加到faces-config.xml中。 lifecycle phase-listener idJSFAjaxTimeoutPhaseListenerhk.edu.hkeaa.infrastructure.security.JSFAjaxTimeoutPhaseListener /phase-listener /lifecycle 如果您使用的是Spring框架则可以在SpringBeanFacesELResolver的帮助下在Spring中管理MyJsfAjaxTimeoutSetting。 然后您可以使用以下配置。 bean idMyJsfAjaxTimeoutSetting classorg.borislam.security.MyJsfAjaxTimeoutSetting scopesession property nametimeoutUrl value/login.do 参考 “ 编程和平”博客上JCG合作伙伴 Boris Lam 对JSF AJAX请求的会话超时处理 。 翻译自: https://www.javacodegeeks.com/2012/12/session-timeout-handling-on-jsf-ajax-request.htmljsf标签p:ajax
http://www.yutouwan.com/news/389872/

相关文章:

  • 公司网站自己创建百度网址大全pc版怎么下载
  • 镇江企业网站制作丽江网站开发找千素网
  • 一级a做爰片免费网站 小说男和女做暖暖网站
  • 可以做微信推文的网站万网阿里云域名查询
  • 河南网站建设运营域名注册公司搭建网站需要什么
  • 珠海微网站进入淘宝电商运营基础知识
  • 国内外html5网站建设状况wordpress 魔客
  • 本站3天更换一次域名yw补习吧 一家专门做家教的网站
  • 蓝众建站_专业网站建设网站没有内容 备案能成功吗
  • 广州网站设计服务商微信小程序商城需要多少钱
  • 有没有转门做乐器演奏的网站手机网页视频下载软件
  • 企业网站的价值建设银行新加坡招聘网站
  • 侠客推 网站建设增城网站开发
  • 网站专题策划页面怎么做手机兼职快递录单员
  • 境外电商平台入驻seo管理与优化期末试题
  • 桃城区网站制作公司下载中国建设银行app
  • ckeditor for wordpress 设置seo优化行业
  • 订阅号可以建设微网站网站登录页面
  • 网站开发移动端免费咨询宠物医生在线
  • 英文网站字体大小试述电子商务网站的建设流程
  • 域名的网站建设方案书网站开发那种语言好
  • 网站怎么做移动图片不显示不出来中国工程建设协会网站
  • google云 wordpressseo搜索如何优化
  • 在手机上创建网站吗网站建设督查报告
  • 常州网站建设套餐重庆谷歌seo关键词优化
  • 给企业做网站.net网站开发教程百度贴吧
  • 河北邢台路桥建设公司网站网站开发流程任务
  • 公司网站设计公司成都网站开发外包公司
  • 环保主题静态网站模板.net 导航网站模板
  • 铭誉摄影网站wordpress文章分享