【问题标题】:how can i check entered textfiled value as only digit or alphabhet in vaadin? [duplicate]如何在 vaadin 中检查输入的文本字段值是否仅为数字或字母? [复制]
【发布时间】:2014-07-01 02:36:57
【问题描述】:

这里我在我的程序中使用搜索 TextField 和搜索按钮

searchTxt = new TextField();
searchTxt.setWidth("400px");

search = new Button("Search");
search.setImmediate(true);
search.addListener((Button.ClickListener) this);

public void buttonClick(ClickEvent event) {
final Button button = event.getButton();
    if (button == search) {
        String searchText = (String) searchTxt.getValue();
        searchText = searchText.trim();

        if (!searchText.equals(GlobalConstants.EMPTY_STRING) && searchText != null)
        {
           // logic
        }               
    }

}

从性能的角度来看,我应该在这里使用哪种逻辑?

【问题讨论】:

  • 你为什么用AWT而不是Swing
  • 这个问题没有任何特定于 vaadin 的内容。您需要的是一种在 Java 中验证字符串的方法。检查我上面评论中的链接。

标签: java validation vaadin


【解决方案1】:

首先,您不应该太在意 GUI 事件处理代码的性能。如果您遇到性能问题,它们很可能不会出现在用户输入验证代码中。

因此,在编写应用程序时,您的重点应该放在可维护性和可读性上。当您使用内置框架功能时,您将最好地实现这一点。因此,假设使用“检查输入的文本是否仅包含字母数字字符”,您的意思是“验证...”,您可以使用 Vaadin 的验证器,更具体地说是 RegexpValidator。你的代码看起来像

searchTxt = new TextField();
 // match at least one or more alphanumeric characters
searchTxt.addValidator(new RegexpValidator("\\w+", true, "Error msg: not valid..."));
public void buttonClick(ClickEvent event) {
final Button button = event.getButton();
    if (button == search) {
        if (searchTxt.isValid()) {
            // logic
        }    
    }
}

这样,只有当用户输入了至少一个字母数字字符时,逻辑才会被执行。

【讨论】:

    【解决方案2】:

    你可以这样做:
    1.检查String的长度是否为1。
    2.如果是,则使用StringcharAt()方法获取零位置的字符。
    3. 然后使用Character.isAlphabetic()Character.isDigit() 进行验证。

    另一种选择是使用RegEx,这将大大减少您的代码行数,但会增加您的学习曲线。

    【讨论】:

    • 您能给我举个正则表达式的例子吗?从性能的角度来看,这个逻辑是否好? (意思是搜索速度)
    猜你喜欢
    • 2015-12-17
    • 2011-02-09
    • 1970-01-01
    • 2021-08-18
    • 2017-07-21
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多