안녕하세요.Vaadin : CDI 주사가 null 인 경우
@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(). ...
}
...
그리고 LoginWindow : (A CDI가에 추가하여) 응용 프로그램이 있습니다
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()
가 null가 아닌 응용 프로그램의 초기화 단계 때 문제가, 하지만 LoginWindow에서 application.authenticate()
메서드를 호출하면 lang.get()
은 항상 null입니다. 참조를 사용할 때 Instance.get()
메소드는 클래스 '인스턴스를 가져올 수 없습니다.
왜 이런 일이 발생하는지 알고 있습니까?
CDI를 지원할 수는 없지만 봄에 기꺼이 도움이됩니다. – OlegYch
감사합니다, OlegYch. 나는 또한 봄을 좋아하지만 CDI로 Vaadin을 사용하는 것이 요구된다. 초기화/주사 순서 문제 – Dmitry