在不使用客户端验证的情况下防止Age的负数

时间:2011-02-04 15:14:47

标签: java

我在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

3 个答案:

答案 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 ValidationHibernate Validator等框架。

两者都是非常好的框架。 Hibernate库是JSR-303标准,它基于注释。它与Spring集成得很好。如果你恰好在Swing GUI中使用JavaBeans,JGoodies验证可以很好地与JGoodies绑定集成。

相关问题