我有这个验证功能。它根据数据库验证登录表单。java是否测试表达式username.isEmpty()
和password.isEmpty()
两次?前者在
if ((!username.isEmpty()) && (!password.isEmpty()))
,后者在
if(username.isEmpty())
error.addError("username", "Username is mandatory.");
if(password.isEmpty())
error.addError("password", "Password is mandatory.");
?
是否有任何内部机制可以“存储”第一个测试的结果,避免重做相同的测试?我想保持性能,同时,我必须填充错误 bean。如果我想放置更多带有更多检查的字段,并使用正则表达式(例如注册表单),该怎么办?那个功能还会好吗?我要遵循的基本原则是:仅当我通过所有测试时才将 true 分配给标志(或输入一段代码)。否则,它将为假(默认情况下)。反之亦然(默认情况下标志为真,可能变为假)。
如果听起来不好,请随时纠正我的英语。谢谢。
public boolean validate(FormBean bean, FormErrorBean error)
{
// the validation flag
boolean valid = false;
if (bean instanceof LoginFormBean)
{
// check not null
if (!bean.isEmpty())
{
String username = ((LoginFormBean) bean).getUsername();
String password = ((LoginFormBean) bean).getPassword();
if ((!username.isEmpty()) && (!password.isEmpty()))
{
// create the DAO
UserDao uDao = new UserDao();
// check the user
valid = uDao.checkUser((LoginFormBean) bean);
// set the validation status of the bean
((LoginFormBean) bean).setValid(valid);
// add the error, if any
if (!valid)
error.addError("Either the username is not valid or the password is wrong.");
}
else
{
if(username.isEmpty())
error.addError("username", "Username is mandatory.");
if(password.isEmpty())
error.addError("password", "Password is mandatory.");
}
}
else
{
// add the empty error...
error.addError("Both the username and password are missing.");
}
}
return valid;
}