我目前正在努力在我的 Java EE 6/JSF 2 webapp 中为一些授权内容放置一个通用逻辑:我有一个要求,即所有带有特定 cookie 的请求都应该重定向到另一个页面。
我考虑了3个解决方案:
1) 使用 servlet 3.0 过滤器 (@WebFilter) 这工作,我也可以在那里注入我的托管 bean,但托管 bean 需要访问面 externalContext,在过滤器调用时尚未设置,所以我得到了 NPE调用托管 bean
2) 使用相位监听 器这感觉很尴尬,因为相位监听器不能是 CDI 组件,因此不能注入其他组件(通过 el-evaluation 除外);对我来说,phaseListener 感觉技术将导航逻辑放入其中。
3) 在 Seam 2.0 中,我可以使用“页面操作”来处理这样的事情,但似乎这个概念并没有融入 JSF 2.0
在接缝中,这看起来像:
<page view-id="/admin/*.jsf">
<action execute="#{authenticator.checkAccess()}" />
</page>
JSF 2.0 真的没有在呈现页面之前执行“控制器逻辑”的概念吗?