为所有页面创建一个监听器

时间:2015-01-31 21:00:31

标签: jsf-2 listener

我必须使用一些监听器类来监听所有页面。根据网址,我必须拆分并得到一些信息。

例如:

x.domain.com/$member

我想通过url获取成员名称,获取以下bean并检索一些数据库信息。

所以,我创建了一个 PhaseListener 来完成这项工作,但是每次我需要它时都不会调用它,例如404错误。

我该怎么办?

非常感谢:)

PS:我正在使用Glassfish 4.1。

1 个答案:

答案 0 :(得分:2)

使用映射在正常和错误页面请求上的servlet filter

<filter-mapping>
    <filter-name>yourFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

在过滤器内部,您可以检查是否存在以RequestDispatcher#ERROR_REQUEST_URI为键的请求属性,如果它是在错误页面上触发的话。

String errorRequestURI = (String) request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI);

if (errorRequestURI != null) {
    // Error page was triggered on the given URI.
}