JSF<;f:事件类型=";“预渲染视图”&燃气轮机;有效,但正确的CSS不是';未加载

JSF<;f:事件类型=";“预渲染视图”&燃气轮机;有效,但正确的CSS不是';未加载,css,jsf,primefaces,prerender,Css,Jsf,Primefaces,Prerender,我正在尝试使用检查每个视图的身份验证 <f:event type="preRenderView" listener="{#loginControl.checkAuthentication}" /> 输出如下: 正如您所看到的,当我检查授权时,组件没有呈现出应有的效果。第一张图片是启用授权检查时生成的视图的屏幕截图。第二个视图是未经授权检查但具有所需外观的渲染视图 有什么想法吗?显然,当导航处理程序在预渲染期间更改视图时,无法添加/更改必需的PrimeFaces CSS/JS

我正在尝试使用检查每个视图的身份验证

<f:event type="preRenderView" listener="{#loginControl.checkAuthentication}" /> 
输出如下:

正如您所看到的,当我检查授权时,组件没有呈现出应有的效果。第一张图片是启用授权检查时生成的视图的屏幕截图。第二个视图是未经授权检查但具有所需外观的渲染视图


有什么想法吗?

显然,当导航处理程序在预渲染期间更改视图时,无法添加/更改必需的PrimeFaces CSS/JS

我建议发送重定向而不是转发

if (user == null) {          
    nav.performNavigation("login?faces-redirect=true");
} else {
    nav.performNavigation("welcome?faces-redirect=true");
}

... 这就成功了。谢谢!不客气。既然你是新来的,请别忘了在解决具体问题时,只要答案对你有帮助(大部分),就要把它标出来。另请参见Hello BalusC,导航性能导航(“欢迎?faces redirect=true”);正在导致重定向循环。请问如何纠正这一点?。当控件转到else块时,preRenderView事件在进入无限循环后再次激发。我正在检查每个视图中的身份验证。PrimeFace 3.4.2、JSF2.0、JPA/EclipseLink、EJB3.1、Glassfih3.1
public void checkAuthorization(ComponentSystemEvent evt){
  FacesContext ctx = FacesContext.getCurrentInstance();
  ConfigurableNavigationHandler nav = (ConfigurableNavigationHandler)      
  ctx.getApplication().getNavigationHandler();

  // navigate to login-screen
  if(this.user==null){          
   nav.performNavigation("login");
  } else {
   nav.performNavigation("welcome");
  }
}
if (user == null) {          
    nav.performNavigation("login?faces-redirect=true");
} else {
    nav.performNavigation("welcome?faces-redirect=true");
}