对象验证

时间:2009-03-25 11:07:25

标签: java

我有一个需要验证的对象。此对象具有不能为null的属性,不能超过给定大小的字符串以及需要检查格式正确性的日期字符串。

您将如何执行此验证。我不想回顾整个对象,我正在寻找更有活力的东西

编辑:

此对象将用于webservices输入,因此任何setter验证都是无用的我也不知道系统将如何使用任何基于注释的系统的附加依赖性

我正在寻找一个自定义解决方案(是的,我知道重新发明轮子)

6 个答案:

答案 0 :(得分:1)

如果没有确切的场景,我建议您使用对象的setter方法( 将字段设为私有,对吗?)来验证值的每个更改。 String setter可以调用长度验证代码,Date setter可以调用格式验证代码等。

希望这有帮助,

Yuval = 8 - )

答案 1 :(得分:1)

答案 2 :(得分:1)

答案 3 :(得分:1)

Web服务的基本验证在WSDL / XSD级别上进行处理。

答案 4 :(得分:1)

您似乎希望在Web服务的服务器端验证该对象。如果是这样,我建议的答案可能适用于您的情况。

正如您已经看到的那样,有几种方法可以验证对象中的字段。但是你知道需要做什么:检查每个字段以查看其值是否有效。这里没有魔力:你只需检查字段。

如果您希望将验证代码保存在一个位置,您可能要做的一件事是创建一个包含验证逻辑的xml架构,从中生成您的类,并使用架构验证您通过线路获得的对象作为参考。这样可以轻松维护验证代码和类:只需更新模式,然后重新生成类。 (我甚至不会将类保留在源代码控制中。只需在编译代码之前生成它。这可以保证您的类始终与您的模式同步。)我确信在Java中有这样的库(JAXB,也许?),但多年来我一直没有使用Java。在许多语言中,这是非常常见的事情。

答案 5 :(得分:0)

建议您在设置对象的属性之前进行验证。例如,如果你有一个你正在从字符串中解析的int属性,那么在设置之前你需要检查null,空字符串,是一个数字等。否则你无论如何都会遇到类型问题。而且,如果您想将错误的值显示给用户,那么您需要保留原始字符串。

如果这是一个Web应用程序,那么有很多框架可以为您完成此部分,然后使用已经验证且类型安全的值初始化您的对象。想到Struts或Spring-MVC,但我不是Web开发人员。他们使用某种xml配置来描述您的对象和相关的验证,您也可以扩展它们。如果这不是网络内容,那么他​​们可能会稍微妨碍他们处理错误并直接向用户显示错误页面。

对于低一点的东西,请尝试Apache Commons Validator