【发布时间】:2012-09-23 11:59:47
【问题描述】:
美好的一天。
有一个应用程序(使用 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() 不为空,但是当我在登录窗口中调用application.authenticate() 方法时,lang.get() 始终为空。似乎在使用引用时,Instance.get() 方法无法获取类的实例。
有人知道为什么会这样吗?
【问题讨论】:
-
对 CDI 无能为力,但很乐意为 Spring 提供帮助。
-
谢谢你,奥列格。我也喜欢 Spring,但必须将 Vaadin 与 CDI 一起使用。似乎是初始化/注入顺序的问题
标签: jakarta-ee jboss7.x vaadin cdi