我在Core java中遇到了问题。 考虑具有名为age的属性的Employee类。
class Employee{
private int age;
public void setAge(int age);
}
我的问题是我如何限制/阻止setAge(int age)方法,使其只接受正数而且不应该允许负数,
Note: This has to be done without using client side validation.how do i achieve it using Java/server side Validation only.The validation for age attribute should be handled such that no exception is thrown
答案 0 :(得分:7)
您只需在方法中验证用户的输入:
public void setAge(int age) {
if (age < 0)
throw new IllegalArgumentException("Age cannot be negative.");
// setter logic
}
如果您不能抛出异常,那么您可能想尝试:
public boolean setAge(int ageP) {
// if our age param is negative, set age to 0
if (ageP < 0)
this.age = 0
else
this.age = ageP;
// return true if value was good (greater than 1)
// and false if the value was bad
return ageP >= 0;
}
您可以返回该值是否有效。
答案 1 :(得分:0)
虽然你说你不能抛出异常,但如果传递的值是负数,你就不会说你想做什么。
你必须以某种方式将验证中的失败传递给调用者。
如果你想让bean执行此操作,当你调用setAge方法时,它要么抛出异常,要么返回一个值。
所以你的选择是:
public void setAge(int age) {
if (age < 0)
throw new IllegalArgumentException("Age cannot be negative.");
this.age = age;
}
或
public boolean setAge(int age) {
if(age < 0)
return false;
this.age = age;
return true;
}
我猜你不想做第二个选项,因为setter通常不返回值。
如果你不想做其中任何一个,那么在调用setAge方法之前在你的调用者中进行测试。
答案 2 :(得分:0)
对于javabean验证,您应该考虑使用JGoodies Validation或Hibernate Validator等框架。
两者都是非常好的框架。 Hibernate库是JSR-303标准,它基于注释。它与Spring集成得很好。如果你恰好在Swing GUI中使用JavaBeans,JGoodies验证可以很好地与JGoodies绑定集成。