我想为Java bean的所有字段编写验证。
我的空白验证方法是
private static boolean isBlank(String value) {
return value.equalsIgnoreCase("")?true:false;
}
我将bean的所有属性传递给isBlank()方法,并且当任何属性为空时想要退出此方法。像这样 -
public static boolean isValid(User user) {
isBlank(user.getPersonId())?return false:{I want to stay here and check next};
isBlank(user.getEmployeeNumber());
isBlank(user.getFullName());
.
.
}
如何以最少的代码实现此目的。
答案 0 :(得分:1)
您不需要isBlank(String value)
,请尝试:
public static boolean isValid(User user){
return !(user.getPersonId().isEmpty()
|| user.getEmployeeNumber.isEmpty()
|| user.getFullName().isEmpty());
}
答案 1 :(得分:0)
您可以在项目中使用Apache commons-lang
并添加此静态导入:
import static org.apache.commons.lang.StringUtils.isNotEmpty;
然后您的代码可以是这样的:
public static boolean isValid(User user) {
return isNotEmpty(user.getPersonId()) && isNotEmpty(user.getEmployeeNumber()) && isNotEmpty(user.getFullName());
}
可以下载Apache Commons Lang here - 只需确保将其作为库添加到项目中,以便可以使用名为StringUtils
的类。
答案 2 :(得分:0)
使用您的代码:
public static boolean isValid(User user) {
if (isBlank(user.getPersonId())) return false;
if (isBlank(user.getEmployeeNumber())) return false;
if (isBlank(user.getFullName())) return false;
.
.
return true;
}
可替换地:
public static boolean isValid(User user) {
if (isBlank(user.getPersonId()) ||
isBlank(user.getEmployeeNumber()) ||
isBlank(user.getFullName())) return false;
return true;
}
如果你想避免编写所有代码,你可以使用反射来动态发现类字段。如果您正在使用bean范例,则可以使用Introspector类。 Here一个教程(我找不到Oracle网站上的那个)。
答案 3 :(得分:-1)
这样做的理想方式是使用Reflection。这样你就不需要对每个变量进行明确的调用,如果有任何变量被删除或添加,你就不会紧密耦合。
使用反射,循环所有可用变量并从try catch块调用isBlank。
private static boolean isBlank(String value) {
boolean flag = value.equalsIgnoreCase("");
if(flag){
throw new Exception(e);
}
retrun flag;
}