我正在编写一个简单的SRMS,如果它符合某些标准,我需要验证用户的输入,具体取决于字段,例如:电子邮件字段或电话字段。该应用程序将在特色手机中运行,因此我使用Java ME SDK和虚拟机进行测试。
这样做的最佳方法是什么,验证输入的最佳方法是什么,如果输入不符合某些条件,应该通知用户还是将输入的值设置为{{1再次。
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;
}
}
和CommandListener
。
我不确定第二个做了什么,并且它有一个被填充的抽象方法,称为ItestStateListener
我应该检查更改并在此处验证?
答案 0 :(得分: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;
}
答案 1 :(得分:1)
ItemStateListener通知应用程序表单项中的更改。当您在表单中的项目由用户更改 >>或在项目中调用 Item.notifyStateChanged()时,系统会调用项itemStateChanged(Item item)方法。参数是改变值的Item(Textfield,DateField,ect)。
我建议您在CommandAction和ItemStateListener中调用验证方法。在itemStateChanged中,只应检查当前Item(在参数中接收的那个)。在CommandAction中,应检查每个字段。这样每个项目都可以在任何情况下得到验证。