有时可能需要在Spring MVC @Controller中使用手动验证 使用Spring的org.springframework.validation.ValidationUtils类非常简单。 了解如何在两种不同的情况下调用验证器。

方案1 –调用验证

在这种情况下,我有一个带有用户名字段的用户表单。 用户名字段使用自定义验证器进行验证,以验证例如数据库中的存在。

public class User {@UserExistsprivate String username;}

在控制器类中,我有一个处理该对象的POST方法的方法:

@Autowired
private org.springframework.validation.Validator validator;@RequestMapping(value = "/user", method = RequestMethod.POST)
public String validate(@ModelAttribute User user, Errors errors) {ValidationUtils.invokeValidator(validator, user, errors);if (errors.hasErrors()) {// error, show errors to the user}// success, form is valid!
}

org.springframework.validation.ValidationUtils是用于调用org.springframework.validation.Validator的类。

请注意,用户参数后面是org.springframework.validation.Errors对象。 Spring初始化了这个对象,但是它是空的,可以传递给invokeValidator方法。

方案2 –通过提示调用验证

在这种情况下,用户表单变得更加复杂:

@GroupSequence(value = {ValidationOrder.First.class, ValidationOrder.Second.class})
interface ValidationOrder {interface First {}interface Second {}
}public class User {@UserExists(groups = ValidationOrder.First.class)@UserIsEntitledToDiscount(groups = ValidationOrder.Second.class)private String username;}

感谢@GroupSequence我可以决定验证顺序。 要触发验证,我需要将其他参数传递给invokeValidator方法,以便正确使用组:

ValidationUtils.invokeValidator(validator, user, errors, ValidationOrder.class);

源代码

源代码包含所有这三种方法,因此您可以快速比较它们: https : //github.com/kolorobot/spring-mvc-beanvalidation11-demo

翻译自: https://www.javacodegeeks.com/2016/04/spring-mvc-trgger-manual-validation-form-object.html

Spring MVC:Trgger手动验证表单对象相关推荐

  1. JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践

    任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层, ...

  2. Spring MVC中的验证组

    可以通过groups属性将Bean验证中的验证约束添加到一个或多个组. 这使您可以限制在验证期间应用的约束集. 在某些小组应先于其他小组进行验证(例如在向导中)的情况下,这可能很方便. 从Spring ...

  3. java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种

    第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...

  4. Spring MVC入门示例教程--表单处理

    以下示例演示如何编写一个简单的基于Web的应用程序,它使用Spring Web MVC框架使用HTML表单. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework ...

  5. Spring MVC框架在进行表单提交,自动封装成对象提交,在以对象的形式入参

    最近做了一个超市订单管理系统的项目,使用的是Spring MVC 和Spring 框架. 如上图:进行新用户添加.此处jsp页面代码如下: <div class="right" ...

  6. Spring MVC 测试 | 模拟提交表单

    在 Spring 4 MVC 单元测试例子 一文中利用Spring test 框架进行了简单的测试,代码mockMvc.perform(get("/SayHello/getAnswer&qu ...

  7. Layui 手动验证表单

    使用的layui,种种原因想自定义执行表单验证方法,发现没有该功能,琢磨了会儿form.js找到了破解之法儿. 新增代码,基本上全是form原有的. form.js: /*** z:表单所在容器id* ...

  8. spring mvc ajax登录验证,vuejs (前端项目) + spring mvc(后台项目),每次ajax请求都是新的session Id...

    问题解决了,解决方式如下: 1.参考ccfish的意见,安装了http-proxy-middleware插件,配置了如下内容: devServer: { host: '127.0.0.1', port ...

  9. [Spring MVC] - InitBinder验证

    Spring MVC使用InitBinder验证: 使用InitBinder做验证的情况一般会在此Controller中提交的数据需要有一些是业务性质的,也即比较复杂的验证情况下才会使用.大部份简单的 ...

最新文章

  1. 如何下载DELL服务器VMware ESXi镜像
  2. Github阅览神器来啦!瞬间提升50%的阅览效率
  3. 睡眠好不在于8小时,关键是满足「睡眠周期」
  4. 四核处理器_(技术文档)你知道AMD Ryzen处理器中的CCX与CCD是什么吗?
  5. Mac版Anaconda安装Tweepy包
  6. python executemany执行延迟_运维架构师-Python 自动化运维开发-031
  7. Fragment学习笔记
  8. 最强自定义PHP集成环境,系统缺失dll和vc也能正常运行
  9. Kubernetes-2018干货盘点
  10. C# 添加PDF注释(5种类型)
  11. Sketch 51 新功能介绍(包含破解版下载)
  12. python数据拟合方法_Python-最小二乘法曲线拟合
  13. JESD204B调试4
  14. 女孩起名取名字:聪明美丽、好听委婉的女孩名字
  15. Cisco RV320未经身份验证的配置导出
  16. shell脚本中使用sudo的前置条件
  17. python布尔类型(bool)
  18. target is not existed: .page-component__scroll .el-scrollbar__wrap
  19. 为什么很多商家开始搭建自己的小程序商城?
  20. [CC2642r1][syscfg] 中文图形化界面,方便快速熟悉工具使用

热门文章

  1. Spring面试题(70道,史上最全)
  2. JavaFX之TableView
  3. 《走遍中国》珍藏版(四)
  4. JS中关于能不能加分号
  5. 2017蓝桥杯省赛---java---C---7 Excel地址)
  6. spark submit参数及调优
  7. php匿名类的应用场景,【modernPHP专题(9)】匿名类
  8. python获取当前进程id_从python进程名中获取进程id
  9. git 拉取gitlab代码
  10. java出代码1601_LeetCode 1601. 最多可达成的换楼请求数目