加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何创建一个仅在vaadin中支持数字的文本字段

发布时间:2020-12-15 00:27:43 所属栏目:Java 来源:网络整理
导读:我正在使用Vaadin文本字段,我想限制它只支持数字.我试图重写setValue()并返回而不调用超级.如果文本不是数字,则返回setValue().但似乎没有工作.我该如何纠正? 我正在使用Vaadin 7.我认为它不支持NumberField. 解决方法 如果我明白你的问题是正确的,你想要有
我正在使用Vaadin文本字段,我想限制它只支持数字.我试图重写setValue()并返回而不调用超级.如果文本不是数字,则返回setValue().但似乎没有工作.我该如何纠正?
我正在使用Vaadin 7.我认为它不支持NumberField.

解决方法

如果我明白你的问题是正确的,你想要有一个字段忽略所有不是数字的输入,不仅将该字段标记为无效. Vaadins架构的设计是,浏览器中的每个字段都在服务器上显示.在我看来,实现这一点的最干净的方法是拥有一个浏览器字段,允许输入字母和其他错误的字符.我在Vaadin 7中找不到这样一个字段.似乎有一个vaadin 6的附件被称为 Number Field,但我没有测试.
您有多种选择:

>将此附加组件连接到vaadin 7或要求作者执行此操作
>写你自己的领域.也许扩展VTextField和TextFieldConnector
>在服务器端执行所有操作,接受延迟和流量(IMHO丑陋)

因为我认为选项3不是要走的路,我可能不应该显示这个代码,但这是实现这个代码的最快方法.

public class IntegerField extends TextField implements TextChangeListener {
String lastValue;

public IntegerField() {
    setImmediate(true);
    setTextChangeEventMode(TextChangeEventMode.EAGER);
    addTextChangeListener(this);
}

@Override
public void textChange(TextChangeEvent event) {
    String text = event.getText();
    try {
        new Integer(text);
        lastValue = text;
    } catch (NumberFormatException e) {
        setValue(lastValue);
    }
}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读