2013-07-25 1 views
0

간단한 SRMS를 작성하고 있는데 필드에 따라 몇 가지 기준과 일치하는 경우 사용자의 입력을 검증해야합니다. 전자 메일 필드 또는 전화 필드. 이 응용 프로그램은 기능이있는 전화에서 실행되므로 Java ME SDK를 가상 컴퓨터와 함께 사용하여 테스트하고 있습니다.Java ME의 TextField에서 입력 값의 유효성을 검사하는 방법

입력을 검증하는 가장 좋은 방법은 무엇이며 입력이 몇 가지 기준을 충족시키지 않으면 사용자에게 통보하거나 입력 한 값을 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; 
    } 
} 

코드를 시작하는 사람은 CommandListenerItestStateListener을 구현했습니다.

두 번째 것은 무엇인지 모르겠으며 채우려는 추상 메소드가 itemStateChanged(Item item)이라면 여기에서 변경 사항을 확인하고 유효성을 검사해야합니까?

답변

1

ItemStateListener 폼 항목의 변경의 적용을 알린다. 항목 itemStateChanged(Item item)은 양식의 항목이으로 변경되거나 Item.notifyStateChanged()이 항목에서 호출 될 때 호출됩니다. 인수는 값을 변경 한 Item (Textfield, DateField 등)입니다.

CommandAction과 ItemStateListener 둘 다에서 유효성 검사 메서드를 호출하는 것이 좋습니다. itemStateChanged에서 현재 항목 (인수에 수신 된 항목) 만 확인해야합니다. CommandAction에서 모든 필드를 확인해야합니다. 이 방법으로 모든 항목은 모든 상황에서 유효성이 검사됩니다.

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; 

}