首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF <f:event type="preRenderView“...>可以工作,但没有加载正确的CSS

JSF <f:event type="preRenderView“...>可以工作,但没有加载正确的CSS
EN

Stack Overflow用户
提问于 2012-06-20 00:20:00
回答 1查看 9K关注 0票数 3

方法检查每个视图的身份验证。

代码语言:javascript
复制
<f:event type="preRenderView" listener="{#loginControl.checkAuthentication}" /> 

标签。

这个机制起作用了,但是外观坏了,似乎缺少一些CSS。当我删除复选标记时,我的页面将按原样显示。

这是我的观点之一,其中是检查身份验证:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<f:event listener="#{loginControl.checkAuthorization}" type="preRenderView" />
<h:head>
...

调用以下方法:

代码语言:javascript
复制
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");
  }
}

输出是这样的:

http://www.convince-it.de/Auswahl_002.jpeg

http://www.convince-it.de/Auswahl_003.jpeg

正如您所看到的,当我检查授权时,组件并没有像它们应该呈现的那样呈现。第一张图片是在启用授权检查的情况下生成的视图的屏幕快照。第二个视图是没有授权检查的渲染视图,但具有所需的外观。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2012-06-20 00:28:01

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

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

代码语言:javascript
复制
if (user == null) {          
    nav.performNavigation("login?faces-redirect=true");
} else {
    nav.performNavigation("welcome?faces-redirect=true");
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11105183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档