程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring MVC:如何执行验证?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring MVC:如何执行验证??

开发过程中遇到Spring MVC:如何执行验证?的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring MVC:如何执行验证?的解决方法建议,希望对你解决Spring MVC:如何执行验证?有所启发或帮助;

使用Spring MVC,可以通过3种不同的方式执行验证:使用批注,手动或两者结合使用。没有唯一的“最干净,最好的方式”进行验证,但是可能有一种更适合您的项目/问题/上下文的方式。

让我们有一个用户:

public class User {

    private String name;

    ...

}

如果您具有Spring 3.x +和简单的验证功能,请使用javax.valIDation.consTraints注释(也称为JsR-303注释)。

public class User {

    @NotNull
    private String name;

    ...

}

您将需要在库中使用JsR-303提供程序,例如作为参实现的Hibernate Validator(此库与数据库和关系映射无关,它只进行验证:-)。

然后在您的控制器中,您将看到类似以下内容的内容:

@requestMapPing(value="/user", method=requestMethod.POST)
public createuser(Model model, @ValID @modelattribute("user") User user, BindingResult result){
    if (result.hasErrors()){
      // do something
    }
    else {
      // do something else
    }
}

请注意@ValID:如果用户碰巧具有空名称,则result.hasErrors()将为true。

如果您具有复杂的验证(如大型企业验证逻辑,跨多个字段的条件验证等),或者由于某种原因您无法使用方法1,请使用手动验证。将控制器的代码与验证逻辑分开是一个好习惯。不要从头开始创建验证类,Spring提供了一个方便org.springframework.valIDation.ValIDator界面(自Spring 2起)。

所以说你有

public class User {

    private String name;

    private Integer birthYear;
    private User responsibleuser;
    ...

}

并且您想执行一些“复杂”的验证,例如:如果用户的年龄未满18岁,则负责用户不能为NULL,负责用户的年龄必须超过21岁。

你会做这样的事情

public class UserValIDator implements ValIDator {

    @OverrIDe
    public Boolean supports(Class clazz) {
      return User.class.equals(clazz);
    }

    @OverrIDe
    public voID valIDate(Object target, Errors errors) {
      User user = (User) target;

      if(user.getname() == null) {
          errors.rejectValue("name", "your_error_code");
      }

      // do "complex" valIDation here

    }

}

然后在您的控制器中,您将:

@requestMapPing(value="/user", method=requestMethod.POST)
    public createuser(Model model, @modelattribute("user") User user, BindingResult result){
        UserValIDator userValIDator = new UserValIDator();
        userValIDator.valIDate(user, result);

        if (result.hasErrors()){
          // do something
        }
        else {
          // do something else
        }
}

如果存在验证错误,则result.hasErrors()将为true。

注意:您还可以使用“ binder.SETVALIDator(…)”在控制器的@InitBinder方法中设置验证器(在这种情况下,无法混合使用方法1和2,因为您替换了默认值验证器)。或者,您可以在控制器的默认构造函数中实例化它。或者在控制器中插入一个@ Component / @ service UserValIDator(@autowired):非常有用,因为大多数验证器都是单例+单元测试模拟变得更加容易+您的验证器可以调用其他Spring组件。

为什么不同时使用两种方法?验证带有注解的简单内容(如“ name”属性)(该操作快速,简洁且可读性强)。保留对验证器的繁重验证(当编写自定义复杂验证注释需要花费数小时,或者仅在无法使用注释时)。我在一个以前的项目中做到了这一点,它就像一个魅力,快速又轻松。

您不得将 误认为是 。

解决方法

我想知道什么是执行用户输入的表单验证的最干净,最好的方法。我已经看到一些开发人员实现了org.springframework.validation.Validator有一个问题:我看到它验证了一个类。是否必须使用用户输入的值手动填充该类,然后将其传递给验证器?

我对验证用户输入的最干净,最好的方法感到困惑。我知道传统的使用方法request.getParameter()然后手动检查的方法nulls,但是我不想在我的工具中进行所有的验证Controller。在这方面的一些好的建议将不胜感激。我没有在此应用程序中使用Hibernate。

大佬总结

以上是大佬教程为你收集整理的Spring MVC:如何执行验证?全部内容,希望文章能够帮你解决Spring MVC:如何执行验证?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。