我对Vaadin有问题;这是我的代码:
@SpringView(name = LoginView.VIEW_NAME)
public class LoginView extends Panel implements View {
private static final long serialVersionUID = 4440163925650357979L;
public static final String VIEW_NAME = "login";
@Autowired
private UiController controller;
public LoginView() {
super();
System.out.println(controller);
}
}
例外情况如下:
2017-01-17 10:20:32.649 ERROR 10176 --- [nio-8080-exec-8] com.vaadin.server.DefaultErrorHandler :
java.lang.NullPointerException: null
at com.open.belgium.tonyrenard.vaadin.views.LoginView.lambda$0(LoginView.java:33) ~[classes/:na]
我不是vaadin的专家,我完全迷失了。依赖性还可以吗?我不知道。。。
它有效,我改变了一点。然后,我回滚,无论如何它都不起作用...你可以帮我吗?
编辑:控制器为空,我不明白为什么...
编辑:我找到了解决方案,我的登录视图没有被Spring实例化。然后,Spring 将不会实例化控制器。我已经在调用器中推迟了新的登录视图,@Autowired工作正常。
您需要实例化您的按钮。
private Button connect = new Button();
其中的一些内容:
event -> {this.controller.entree(log.getValue(), pwd.getValue());}
是null
.根据堆栈跟踪,唯一可以为空的就是 controller
。如果是log
或pwd
,那么NullPointerException
就会发生在UiController::entree
内部。
编辑:我在上面错了,这个lamda中的所有内容都可以为空,包括log
和pwd
。假设controller
不能为空,因为它被注入了,那么它必须是log
或pwd
。
我找到了解决方案,我的 LoginView 没有被 Spring 实例化。
因此,Spring 不会实例化控制器。
我在"调用方"中@Autowired登录视图,控制器的@Autowired工作正常。