我正在使用Vaadin文本字段,并且希望将其限制为仅支持数字。我试图覆盖setValue()
并返回而不调用super。如果文本不是数字,则为setValue()
。但这似乎不起作用。我该如何纠正?
我正在使用Vaadin7。我认为它也不支持NumberField。
最佳答案
如果我理解您提出的问题正确,那么您希望有一个字段可以忽略所有不是数字的输入,而不仅要将该字段标记为无效。 Vaadins体系结构设计为浏览器中的每个字段在服务器上都有其表示形式。在我看来,实现此目的的最简单方法是拥有一个浏览器字段,该字段允许输入字母和其他错误字符。我在Vaadin 7中找不到这样的字段。vaadin6似乎有一个名为Number Field的附加组件,但我没有对其进行测试。
您有多种选择:
由于我认为选项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);
}
}
}
关于java - 如何创建仅在vaadin中支持数字的文本字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17144798/