繁体   English   中英

如何验证 Java 中没有缺少 JPasswordField?

[英]How do I verify JPasswordField is not missing in Java?

我正在 java 中创建一个应用程序,该应用程序在创建新帐户时必须要求用户输入密码和用户名,如果缺少用户名或密码,它会向用户发送适当的警告,否则,如果没有用户名或密码丢失它会将数据发送到我在 SQL 中创建的数据库。 知道 JPasswordField.getPassword() 返回一个字符数组,我尝试**以这种方式获取用户密码:

private static void doIfSomethingIsMissing() {
        // Turning JPasswordField to a String.
        String passwordText = new String(passwordField.getPassword());
        if(passwordText.toString().equals("")) {
            accountCreationWarning.setText(missingPassword);    
        }
        else if(usernameField.getText().toString().equals("")) {
            accountCreationWarning.setText(missingUser);
        }
        
        
        
    }

这就是它的作用:

  1. 如果您既没有输入用户名也没有输入密码,它会说“密码丢失”(正确)。
  2. 如果您只输入了密码,它会显示“密码丢失”(正确)
  3. 如果您只插入了用户名,它(非常错误地)会更新数据库以插入新用户。

** 当然这不是我尝试过的唯一方法,我已经尝试了很多解决方案,所以如果您认为我没有进行足够的研究,那您就错了。

建议的方法:

private boolean validateLogon () {
    if (passwordField.getPassword().length == 0) {
        accountCreationWarning.setText(missingPassword);
        return false;
    }
    if(usernameField.getText().equals("")) {
        accountCreationWarning.setText(missingUser);
        return false;
    }
    return true;
}
  1. 该方法旨在验证是否同时提供了用户名和密码。 validateLogon()这个名字更好地表达了这一点。

  2. 从“静态”更改允许您访问封闭 class 中的其他成员。 包括“accountCreationWarning”。 我猜这可能是 Swing JTextField (或等效)。 如果您愿意,它还允许您在 class 中将“missingPassword”和“missingUser”声明为static final String常量。

  3. 返回“true”或“false”允许调用者决定是否更新数据库(和/或采取其他纠正措施,如果用户名/密码验证失败)。

  4. 不需要额外的“toString()”调用。

PS:这假设“usernameField”和“passwordField”在用户输入任何内容之前都是空白的。

不确定实际问题是什么,但您似乎想检查userNamepassword是否为空。

所以删除 else,并使用单独的if块来检查userName是否为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM