Java 如何在所有过滤器之前运行相位监测器?

Java 如何在所有过滤器之前运行相位监测器?,java,jsf,servlet-filters,phaselistener,Java,Jsf,Servlet Filters,Phaselistener,我有一个鉴相器和多个过滤器。我想知道是否有办法创建优先级。我要先安装phaseListener,然后安装所有过滤器。我将web.xml中的url映射/*用于我的过滤器。当模式相等匹配时,处理顺序由描述符web.xml中过滤器映射的顺序决定 因此,如果希望X位于第一位,则首先列出它。当模式相等匹配时,处理顺序由描述符web.xml中过滤器映射的顺序决定 所以如果你想让X排在第一位,那就先把它列出来 我要先安装phaseListener,然后安装所有过滤器 那是不可能的。阶段侦听器将由JSF fac

我有一个鉴相器和多个过滤器。我想知道是否有办法创建优先级。我要先安装phaseListener,然后安装所有过滤器。我将web.xml中的url映射/*用于我的过滤器。

当模式相等匹配时,处理顺序由描述符web.xml中过滤器映射的顺序决定


因此,如果希望X位于第一位,则首先列出它。

当模式相等匹配时,处理顺序由描述符web.xml中过滤器映射的顺序决定

所以如果你想让X排在第一位,那就先把它列出来

我要先安装phaseListener,然后安装所有过滤器

那是不可能的。阶段侦听器将由JSF faces servlet执行。但是,根据规范,过滤器是在任何servlet之前调用的。你需要修改你的方法。显然,相位侦听器实际上需要是一个过滤器。如果您完全不依赖于faces上下文,这是很有可能的。然后,过滤器映射可以放在web.xml中所有其他过滤器映射的前面

我要先安装phaseListener,然后安装所有过滤器


那是不可能的。阶段侦听器将由JSF faces servlet执行。但是,根据规范,过滤器是在任何servlet之前调用的。你需要修改你的方法。显然,相位侦听器实际上需要是一个过滤器。如果您完全不依赖于faces上下文,这是很有可能的。然后,可以将筛选器映射放在web.xml中所有其他筛选器映射的前面。

我希望我的阶段侦听器位于第一位,在此之后我不想让我的阶段侦听器位于第一位,在此之后我不想让我的阶段侦听器位于第一位。我们使用的是Wildfly 9.0.2,在筛选之前会调用PhaseListener。@Olivier:这可能是一种误解,例如,在chain.doFilter调用之后会执行不同的请求或筛选工作。没错,这是一种误解,因为PhaseListener是在显示登录页面之前调用的,而过滤器根本没有被调用。现在我不知道为什么在显示登录页面之前不调用过滤器。编辑:我在这里找到了原因:;奇怪的我们使用的是Wildfly 9.0.2,在筛选之前会调用PhaseListener。@Olivier:这可能是一种误解,例如,在chain.doFilter调用之后会执行不同的请求或筛选工作。没错,这是一种误解,因为PhaseListener是在显示登录页面之前调用的,而过滤器根本没有被调用。现在我不知道为什么在显示登录页面之前不调用过滤器。编辑:我在这里找到了原因:;