java - 确定按钮在 vaadin 中不起作用
问题描述
我有一个带有一个文本字段和两个按钮确定和取消的子窗口。当我单击确定按钮时,什么都没有发生。我不明白我在犯什么错误。有人可以帮我弄这个吗。另外我想知道我应该如何将多个电子邮件地址放在一个用分号分隔的文本字段中。
这是我的代码
更新:大家好,我解决了这个问题。谢谢
package com.xitee.ccpt.ui.window;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import com.vaadin.data.Binder;
import com.vaadin.data.HasValue.ValueChangeEvent;
import com.vaadin.data.validator.EmailValidator;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.TextField;
import com.xitee.ccpt.entity.Person;
import com.xitee.ccpt.entity.Phone;
public class PersonWindow extends DialogWindow<Person>{
private static final String WINDOW_WIDTH = "400px";
private static final String WINDOW_HEIGHT = "270px";
private static final String ENTER_VALID_EMAIL_ADDRESS = "Enter valid email address";
private final FormLayout mainLayout;
private final TextField efield;
private Person email;
private static final Logger LOGGER = LoggerFactory.getLogger(PersonWindow.class);
public PersonWindow(String title, DialogWindowListener<Person> listener ) {
this (title, listener,"");
// TODO Auto-generated constructor stub
}
public PersonWindow(String title, DialogWindowListener<Person> listener, String type)
{
super(title, listener, WINDOW_WIDTH, WINDOW_HEIGHT);
LOGGER.info("Creating dialog window: Email window");
mainLayout = new FormLayout();
efield = new TextField("Email:");
mainLayout.addComponent(efield);
init(mainLayout);
doFieldValidations();
}
Binder<Person> binder = new Binder<>(Person.class);
@Override
protected void doFieldValidations() {
// TODO Auto-generated method stub
binder.forField(efield).withValidator(new EmailValidator(ENTER_VALID_EMAIL_ADDRESS));
}
public void setEmail(Person email)
{
LOGGER.info("Loading Email " + email.getPersonId() + " into email dialog window");
efield.setValue(email.getEmail());
this.email = email;
}
@Override
protected boolean confirmed() {
if (!isEmpty())
{
if (isValid())
{
if (email == null)
{
email = new Person();
}
email.setEmail(efield.getValue());
listener.dialogConfirmed(email);
}
else
{
return false;
}
}
return true;
}
@Override
protected boolean isEmpty() {
boolean ret = true;
if (!StringUtils.isEmpty(efield.getValue()))
{
ret = false;
}
return ret;
}
@Override
protected boolean isValid() {
return false;
}
}
确定按钮的代码
Button okButton = new Button("OK");
okButton.addClickListener(new ClickListener()
{
private static final long serialVersionUID = 2387863967859745591L;
@Override
public void buttonClick(ClickEvent event)
{
if (confirmed())
{
close();
}
}
});
buttonPanel.addComponents(cancelButton, okButton);
}
解决方案
推荐阅读
- automated-tests - frobot 框架 - 在测试之外使用
- r - 在 summarytools 中嵌套 ifelse
- c# - C#。Ref 扩展方法的 Ref 返回委托
- python - 如何计算两个大型稀疏矩阵之间的余弦相似度?
- javascript - 是否可以隐藏表单字段可见和隐藏名称以及黑客的表单操作
- google-apps-script - 我的脚本存在范围问题
- php - 如何在 Elementor (Pro) 中取消注册/出列 jquery.sticky.js?
- laravel-5 - 如何对数据表中的多列应用 switch 语句
- vue.js - Vue 不会使用动态组件从 Vuex 更新 v-for 中的项目
- apache - 如果 URI 是文件链接,则添加文件夹,否则使用 index.php 重写