美好的一天。Vaadin:參考後CDI注入爲空
有一個應用程序(使用CDI添加上):
@VaadinScoped(VaadinScope.APPLICATION)
public class AdminApplication extends AbstractCdiApplication {
@Inject
private Instance<Lang> lang;
@Override
public void init() {
setMainWindow(new LoginWindow(this));
}
public void authenticate(String login, String password) throws Exception {
lang.get(). ...
}
...
而且登錄窗口:
public class LoginWindow extends Window {
...
public LoginWindow(AdminApplication application) {
super("LoginWindow Login");
this.application = application;
initUI();
initLoginListener();
}
private void initLoginListener() {
btnLogin.addListener(new Button.ClickListener() {
public void buttonClick(Button.ClickEvent event) {
try {
String username = (String) txtUsername.getValue();
String password = (String) txtPassword.getValue();
application.authenticate(username, password);
} catch (Exception e) {
showNotification(e.toString());
}
}
});
}
問題是,當它是應用程序的初始化階段lang.get()
不爲空,但是當我在LoginWindow中調用application.authenticate()
方法時,lang.get()
始終爲空。看起來在使用引用時,Instance.get()
方法無法獲得類的實例。
有誰知道爲什麼會發生這種情況?
不能幫助CDI,但很樂意幫助Spring。 – OlegYch
謝謝OlegYch。我也喜歡Spring,但是要求在CDI中使用Vaadin。這似乎與初始化/注入順序的問題 – Dmitry