是否可以將@SessionScoped
bean用作自定義作用域的上下文中的字段?我正在用CDI編寫一個自定義作用域(「ScreenScoped」),因此它與CDI的@ViewScoped
(我這樣做是因爲後者不與WebSphere兼容)具有相同的行爲。到目前爲止,我的範圍就像@ApplicationScoped
一樣。我想使用我的@SessionScoped NavigationHandler
類,每次用戶單擊鏈接或按鈕時調用該類,以確定我的ScreenScoped生命週期何時結束。但是,當我嘗試使用@Inject
ed字段時,我確實收到錯誤。在自定義範圍中使用注入
public class ScreenContext
implements Context
{
@Inject
private NavigationHandler navigationHandler;
...
}
一個NullPointerException異常出現,因爲這個@Inject
:
16:55:07,492 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost/127.0.0.1:8443-10) Error Rendering View[/page/hello.xhtml]: javax.el.ELException: /page/hello.xhtml @24,58 visible="#{helloController.popupshowed}": java.lang.NullPointerException
...
Caused by: java.lang.NullPointerException
at com.mypackage.scope.screenscope.ScreenContext.get(ScreenContext.java:38) [myproject.jar:]
38號線是我第一次打電話注入領域:
System.out.println("Navigation is used: " + navigationHandler.getUserId());
使用BeanManager得到NavigationHandler豆 – Rouliboy
自定義背景下通過擴展註冊,注射不能進行 – Rouliboy