【发布时间】:2017-05-19 13:21:10
【问题描述】:
我是 Vaadin 的新手,我遇到了问题。
我已经尝试过:https://vaadin.com/web/magi/home/-/blogs/model-view-presenter-pattern-with-vaadin 并且示例应用还可以,但是当我尝试创建类似的东西时,它对我不起作用。
我有一个简单的登录表单(登录名、密码字段和一个按钮)。而且按钮有问题。它没有被触发。我可以点击,但动作没有开始。
这是我的代码:
public interface LoginView {
public void getNotification(String text);
interface LoginViewListener{
void loginButtonClick(String login, String password);
}
public void addListener(LoginViewListener listener);
}
public class LoginViewImpl extends CustomComponent implements LoginView,Button.ClickListener {
private TextField loginField = new TextField();
private PasswordField passwordField = new PasswordField();
private Label loginLabel = new Label("Login:");
private Label passwordLabel = new Label("Password:");
private Button loginButton = new Button("Login");
LoginViewListener listener;
public LoginViewImpl(){
VerticalLayout layout = new VerticalLayout();
layout.setSizeFull();
layout.addComponent(loginLabel);
layout.addComponent(loginField);
layout.addComponent(passwordLabel);
layout.addComponent(passwordField);
layout.addComponent(loginButton);
setCompositionRoot(layout);
}
public void getNotification(String text){
Notification.show(text);
}
@Override
public void buttonClick(Button.ClickEvent event) {
listener.loginButtonClick("jeden","dwa");
}
public void addListener(LoginViewListener listener) {
this.listener = listener;
}
}
public class LoginModel {
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String login;
private String password;
}
public class LoginPresenter implements LoginView.LoginViewListener {
LoginModel model;
LoginView view;
public LoginPresenter(LoginModel model, LoginView view){
this.model = model;
this.view = view;
view.addListener(this);
}
@Override
public void loginButtonClick(String login, String password) {
view.getNotification(login + " " + password);
}
}
@SpringUI(path = "")
public class MainClass extends UI {
@Override
protected void init(VaadinRequest request) {
LoginModel model = new LoginModel();
LoginViewImpl view = new LoginViewImpl();
new LoginPresenter(model, view);
VerticalLayout layout = new VerticalLayout();
layout.setSizeFull();
layout.addComponent(view);
setContent(layout);
}
}
你能告诉我有什么问题吗? :(
【问题讨论】:
-
addClickListener() 丢失