【问题标题】:How to validate input value in a TextField in Java ME如何在 Java ME 中验证 TextField 中的输入值
【发布时间】:2013-07-25 05:41:15
【问题描述】:

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

这样做的最佳方式是什么,验证输入的最佳方式是什么再次。

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) 我应该在这里检查更改并验证吗?

【问题讨论】:

    标签: java validation mobile java-me textfield


    【解决方案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;
    

    }

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-09
        • 2014-04-24
        • 1970-01-01
        相关资源
        最近更新 更多