首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@PostConstruct在PhaseListener中未调用

@PostConstruct在PhaseListener中未调用
EN

Stack Overflow用户
提问于 2015-02-03 00:06:46
回答 1查看 479关注 0票数 0

我使用的是jsf2.2和通配符8.1和javaee7。

我在phaselistener中的CDI bean注入按预期工作,但@PostConstuct方法从未被调用。

我试着用@javax.enterprise.context.ApplicationScope、SessionScope对phaselistener进行注释,但是没有效果。

除了命名之外,这也是我在我的帖子构造中所做的事情。

代码语言:javascript
复制
//@ApplicationScope
//@SessionScope
//@Dependent
public class MyPhaseListener implements PhaseListener {

   @Inject
   @Any
   private Instance<MyOrderedUrlHandler> myOrderedUrlhandlers;
   private Map<String, List<MyOrderedUrlHandler> orderedUrlHandlersMap;

   @PostConstruct
   void mapOrderedUrlHandlers() {
      LOG.info("Executing postconstruct");
      orderedUrlHandlersMap = Maps.newHashMap();

      for(final MyOrderedUrlHandler urlhandler : myOrderedUrlhandlers) {
         final String handles = urlhandler.url();
         final List<MyOrderedUrlHandler> registeredHandlers = orderedUrlHandlersMap.get(handles);

         if(registeredHandlers == null) {
            registeredHandlers = Lists.newArraList();
         }
         registeredHandlers.add(urlHandler);
         orderedUrlHandlersMap.put(handles, registeredHandlers);
      }
   }
}

方法水平注入也很好。

@PostConstruct回调不是jsf phaselistener规范的一部分吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-03 16:46:42

根据JSF2.2规范的5.4.1节,PhaseListener不是托管bean,而是可注入的。

根据5.4.2节,托管bean必须支持生命周期注释@PostConstruct@PreDestroy

由于PhaseListener不是JSF意义上的托管bean,所以它不遵循特定的规范,即阶段侦听器实现必须支持@PostConstruct

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28289153

复制
相关文章

相似问题

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