如何在vaadin中将输入的文本字段值检查为仅数字或字母?

时间:2014-05-13 12:12:20

标签: java validation vaadin

我在程序中使用搜索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
        }               
    }

}

我应该从性能的角度来看这个逻辑?

2 个答案:

答案 0 :(得分: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
        }    
    }
}

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

答案 1 :(得分:0)

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

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