- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有一些文本字段的基本 BeanFieldGroup
编辑器。我公开了 save-Button
以便 Presenter
类可以注册到它。
问题:当 View 中的 TextField
元素出现验证错误时,我想阻止 clickevent 的传播(因为无效的输入值需要进一步的用户输入,并且不应触发任何其他操作)。
但是我怎样才能阻止它们呢?
class UserView {
private TextField username = new TextField("username");
private Button save;
private BeanFieldGroup<User> editor;
public UserView() {
editor = new BeanFieldGroup<User>(User.class);
save = new Button("Save", new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
try {
editor.commit();
} catch (CommitException e) {
//how can I prevent the click event to be routed to the presenter?
Notification.show("Form invalid");
}
}
});
}
public getSaveBtn() {
return save;
}
}
class UserPresenter implements Button.ClickListener {
void bind() {
view.getSaveBtn().addClickListener(this);
}
@Override
public void buttonClick(ClickEvent event) {
//this should be prevented if username field has validation errors in view
doa.save(entity);
}
}
最佳答案
您的代码很好,只是您为保存按钮注册了两个 ClickListeners
。演示者中的监听器有效地规避了 editor
FieldGroup 的验证逻辑,因为无论 FieldGroup 验证的结果如何都会调用它。您需要的是演示者上的一个方法,该方法将在输入成功验证后专门调用。
因此,UserView
中 ClickListener 的代码应如下所示:
save = new Button("Save", new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
try {
editor.commit();
// no CommitException thrown until now, so go ahead and tell the presenter:
presenter.doSave(entity);
} catch (CommitException e) {
// validation failed -> don't tell the presenter
Notification.show("Form invalid");
}
}
});
关于java - 如果字段存在验证错误,如何防止 ClickEvent 传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23754174/
我在面板上有 10 个标签 - 和 10 个相同的 ClickEvents(更改背景颜色)。 我怎样才能减少代码,即编写一个通用程序? 像这样的东西: foreach (Control c in pa
我有一个按钮,当您单击它时会显示一个对话框。 但是,如果您单击该按钮,它会显示对话框,同时它将关闭然后再次打开。 似乎对话框的 closeEvent 在按钮上的 clickEvent 之前抛出。因此,
我正在使用循环函数将一些元素填充到 div 中。该 div 的每个元素都有 onClick 函数。问题是 onclick 函数没有触发。 这是我的代码: var Source = "#boxcard"
这是代码,谁能告诉我如何让onClick事件运行? Activity 的 xml 文件,其中包含一个抽屉导航 fragment 、一个 ImageView 、一个 TextView 和一个 Image
我创建了 NavigationView 并设置了 3 个项目。 如下图所示: 现在我想要的是,当我点击特定项目时,它应该启动一个 Activity 。 如何实现? 谢谢! 最佳答案 我从您的问题中可以
当我点击元素栏中的元素时,它什么都不做,我可以将它拖到任何我想要的地方。然后我重新打开库存,元素又回来了。我希望单击该项目(在本例中为通知项目)以切换通知 boolean 值并关闭库存。请帮忙。这可能
当我单击一个按钮时,必须显示一个下拉菜单。当我点击页面中的任何地方时,它需要隐藏。我遇到的问题是:当我运行该页面时,我可以看到下拉菜单而不是点击事件。我尝试了不同的 div 标签,但没有效果。 演示:
在 TableView 中使用 CheckBoxTableCell 我不想在用户单击复选框时执行某些代码。此代码需要在检查 CheckBox 之前以及更改关联的属性之前执行。 由于 CheckBoxT
我正在使用 MVVM 在 WPF 中创建一个应用程序,但我处于困境,因为我无法将命令绑定(bind)到 Canvases ClickEvent。 我想在 Canvas 上放置一些矩形并将其位置保存到数
我正在尝试创建一个简单的按钮,当单击它时,我想触发 FormPanel 内的隐藏 FileUpload 小部件。到目前为止我做了两件事: 我创建了一个原生 JavaScript单击 FileUploa
我有一个带有一些文本字段的基本 BeanFieldGroup 编辑器。我公开了 save-Button 以便 Presenter 类可以注册到它。 问题:当 View 中的 TextField 元素出
HTML: content Javascript: this.content = ko.observable(false); //Named function triggers at
下面是我今天想到并创建的一个小项目的链接。我无法使用 IIFE 让按钮多次工作。我已经在没有 IIFE 的情况下解决了这个问题,但我的理解是最好将代码设为私有(private)...任何建议将不胜感激
我有一个 ListView,可将数据从数据库填充到复杂的 ListView 中。数据库的“gotoURL”列中的字符串是使用 putExtra Intent 将链接加载到 WebView 的 URL。
共有三个图标。我把图标放在整数数组上。我怎样才能给他们点击监听器事件。 icon0、icon1、icon2 事件不同。我想给他们点击事件。但我做不到。如何分别给图标点击事件 我使用 wheel.gam
我通过以下方式启用了 google map mylocation 标记: googleMap.isMyLocationEnabled = true 然后它将显示以下内容: 但现在我想要在用户触摸此标记
是否可以向 ImageButton 添加点击事件? 最佳答案 是的!你可以像这样实现 onclick 方法 ImageButton ib = (ImageButton)findViewById(R.i
我希望在我的网站上有一个模拟 CTRL + +(放大)的按钮。所以我需要创建 2 个按键或其他东西。我有以下触发 1 个按键的命令: Stackoverflow f
尝试合并时遇到以下问题 CSS用 JS 转换事件处理程序。我知道如何使用 CSS 过渡属性,例如: div { width: 50px; height: 50px; backg
“当用户单击描述 TextView 和 Like ImageButton 时,我尝试创建 Toast 消息。但 list_item 未响应触摸事件” “我询问了很多其他人关于改变焦点的问题,但他们都没
我是一名优秀的程序员,十分优秀!