验证功能问题

yop*_*tes 2 java

您好我无法得到正确的验证.我认为此代码中存在一些错误,所以任何人都可以帮我解决这个问题.

 public static boolean validateFee(String value) {

        boolean isvalid = true;
        try {
            int fee = 0;
            if (value != null && !value.isEmpty()) {
                fee = Integer.parseInt(value);
            }
        } catch (NumberFormatException ne) {
            // ne.printStackTrace();
            isvalid = false;
            return isvalid;

        }
        return isvalid;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码验证费用,其中使用正则表达式作为[0-9] +.这段代码我在一个公共函数中使用它.实际上验证调用是在servlet中完成的,如下所示:

private Boolean validateFee(HttpSession session, PropertiesHandler props, String number) {
    Boolean isvalid = true;
    HashMap hashMap = new LinkedHashMap();
    number = ApplicationConstants.FEE_PATTERN;
    if (!Validation.validateFee(number)) {
        isvalid = false;
        hashMap.put("time", props.getText("error.fee.invalid.type"));
    }
    session.setAttribute("errorMessage", hashMap);
    System.out.println("Map size " + hashMap.size());
    logger.info("Exit validateTIme"); return isvalid;
} 
Run Code Online (Sandbox Code Playgroud)

我认为没有错误,但我对这个功能有疑问.我遇到了一个问题,比如如果我给这个费用编号也是它的验证.请帮助我

Jon*_*eet 5

目前它允许null或""的值被认为是有效的 - 这是故意的吗?

请注意,您可以更简单地重写当前代码:

public static boolean validateFee(String value) {
    try {
        if (value != null && !value.isEmpty()) {
            Integer.parseInt(value);
        }
        return true;
    } catch (NumberFormatException ne) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果你想将null/empty视为无效,我会将其重写为:

public static boolean validateFee(String value) {
    if (value == null || value.isEmpty()) {
        return false;
    }
    try {
        Integer.parseInt(value);
        return true;
    } catch (NumberFormatException ne) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)