0

我正在编写一个简单的 SRMS,我需要验证用户的输入是否符合某些条件,具体取决于字段,例如电子邮件字段或电话字段。该应用程序将在功能手机中运行,因此我使用带有虚拟机的 Java ME SDK 进行测试。

这样做的最佳方式是什么,验证输入的最佳方式是什么,如果输入不符合某些标准,是否应该通知用户或者她输入的值要null再次设置。

public void name() {
    boolean nameValid = false;
    display = Display.getDisplay(this);
    nameForm = new Form("Student Record Management (1/4");
    TextField firstName = new TextField("First Name(s)", "", 20, TextField.ANY);
    TextField lastName = new TextField("Last Name", "", 20, TextField.ANY);
    TextField personNumber = new TextField("Person Number", "", 10, TextField.NUMERIC);
    back = new Command("BACK", Command.BACK, 1);
    next = new Command("Continue", Command.ITEM, 2);

    nameForm.append(firstName);
    nameForm.append(lastName);
    nameForm.append(personNumber);
    nameForm.addCommand(back);
    nameForm.addCommand(next);
    nameForm.setItemStateListener(this);
    nameForm.setCommandListener(this);
    display.setCurrent(nameForm);

    if (firstName.toString().length() > 0) {
        nameValid = true;
    }
}

启动代码的人已经实现了CommandListenerand ItestStateListener

我不确定第二个是做什么的,它有一个要填充的抽象方法,itemStateChanged(Item item)我应该在这里检查更改并验证吗?

4

2 回答 2

1
public static boolean validateEmailID(String email) {
email = email.trim();
String reverse = new StringBuffer(email).reverse().toString();
if (email == null || email.length() == 0 || email.indexOf("@") == -1) {
    return false;
}
int emailLength = email.length();
int atPosition = email.indexOf("@");
int atDot = reverse.indexOf(".");

String beforeAt = email.substring(0, atPosition);
String afterAt = email.substring(atPosition + 1, emailLength);

if (beforeAt.length() == 0 || afterAt.length() == 0) {
    return false;
}
for (int i = 0; email.length() - 1 > i; i++) {
    char i1 = email.charAt(i);
    char i2 = email.charAt(i + 1);
    if (i1 == '.' && i2 == '.') {
        return false;
    }
}
if (email.charAt(atPosition - 1) == '.' || email.charAt(0) == '.' || email.charAt(atPosition + 1) == '.' || afterAt.indexOf("@") != -1 || atDot < 2) {
    return false;
}

return true;

}

于 2013-07-25T11:15:35.060 回答
1

ItemStateListener通知应用程序表单项的更改。当用户更改表单中的项目或在Item 中调用Item.notifyStateChanged()时,将调用item 的itemStateChanged(Item item)方法。参数是更改值的项目(文本字段、日期字段等)。

我建议您在 CommandAction 和 ItemStateListener 中调用您的验证方法。在 itemStateChanged 中,仅应检查当前项目(参数中收到的项目)。在 CommandAction 中,应检查每个字段。这样,每个项目在每种情况下都得到验证。

于 2013-07-25T14:06:09.220 回答