Java 验证bean的最佳方法

Java 验证bean的最佳方法,java,validation,javabeans,bean-validation,Java,Validation,Javabeans,Bean Validation,假设我有一个bean,它有10个属性。 我还有一个关于对象的错误,它有三个属性,即。errorFlag、errCd和errMsg 我想验证bean属性的顺序性,我想在第一次出现错误时中断并填充错误对象。 我该怎么做,我想有最低限度的如果。else if语句 菜豆 public class ErrObj{ private String errorMessage; private String errorCode; private boolean errorFlag;

假设我有一个bean,它有10个属性。 我还有一个关于对象的错误,它有三个属性,即。errorFlag、errCd和errMsg 我想验证bean属性的顺序性,我想在第一次出现错误时中断并填充错误对象。 我该怎么做,我想有最低限度的如果。else if语句

菜豆

public class ErrObj{
    private String errorMessage;
    private String errorCode;
    private boolean errorFlag;
    public String getErrorMessage() {
        return errorMessage;
    }
    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }
    public String getErrorCode() {
        return errorCode;
    }
    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }
    public boolean isErrorFlag() {
        return errorFlag;
    }
    public void setErrorFlag(boolean errorFlag) {
        this.errorFlag = errorFlag;
    }   
}
下面是我验证Bean的类 假设,我使用一些自定义util类的静态方法,这些方法根据字段是否有效返回布尔值

 public class ValidateMyBean{

    ErrObj errObj = new ErrObj();
    if(!CustomUtils.isValid(myBean.getProp1))
    {
       // set some error conditions
       errObj.errorCode("123");
       errobj.setErrorMessage("validation 1 Failed");
    }
    else if(!CustomUtils.isValid(myBean.getProp2))
    {

    }
    ..........so on

    }
因此,如果我的bean有10个属性,并且我必须根据3个验证器方法验证每个属性,那么我不想编写多个“if-elseif”语句,也不想在每个if语句的末尾编写带有return语句的mutliple“if”语句,以防出现任何错误。 是否有任何清洁剂的方法或有一些框架,可以帮助我达到预期的结果?
PS:这个Java应用程序使用Spring核心框架,是一个webservice应用程序,而不是MVC应用程序。

有许多验证UTIL。您可以检查以下示例:

还有一个关于它的jsr规范:jsr-303


享受使用JSP访问Java bean的乐趣:

<html>
<head>
<title>useBean Example</title>
</head>
<body>

<jsp:useBean id="date" class="java.util.Date" /> 
<p>The date/time is <%= date %>

</body>
</html>
使用JSP编写JavaBean程序变得更加容易

useBean操作声明了一个JavaBean以在JSP中使用。一旦声明,bean就成为一个脚本变量,脚本元素和JSP中使用的其他自定义标记都可以访问它。useBean标记的完整语法如下所示:

<jsp:useBean id="bean's name" scope="bean's scope" typeSpec/>

在此,scope属性的值可以是页面、请求、会话或应用程序,具体取决于您的需求。id属性的值可以是任何值,只要它是同一JSP中其他useBean声明中唯一的名称

下面的示例显示了它的简单用法:

<html>
<head>
<title>useBean Example</title>
</head>
<body>

<jsp:useBean id="date" class="java.util.Date" /> 
<p>The date/time is <%= date %>

</body>
</html>

useBean示例
日期/时间是
这将产生以下结果:


日期/时间是2010年9月30日星期四11:18:11 GST

它不是MVC应用程序。那么第一个链接适用吗?JSR是一个验证标准。不管是否使用MVC,jsr-303的实现都是进行验证的标准方法。例如,hibernate在另一个边界使用符合jsr-303的(大约)验证:。因此,是的,第一个链接适用。它只是预定边界上的通用bean验证机制,在示例中是控制器绑定,但它可以是任意的。你也可以用自定义代码来编造类似的东西,如果你这么想的话。我真的推荐bean验证规范,但想补充一点,它们已经升级到1.1版了:谢谢,我是JSR-303的新手,不过它看起来很有希望,我希望学习,谢谢你的指点和指导。