Spring MVC:Trgger手动验证表单对象
有时可能需要在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手动验证表单对象相关推荐
- JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践
任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层, ...
- Spring MVC中的验证组
可以通过groups属性将Bean验证中的验证约束添加到一个或多个组. 这使您可以限制在验证期间应用的约束集. 在某些小组应先于其他小组进行验证(例如在向导中)的情况下,这可能很方便. 从Spring ...
- java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种
第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...
- Spring MVC入门示例教程--表单处理
以下示例演示如何编写一个简单的基于Web的应用程序,它使用Spring Web MVC框架使用HTML表单. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework ...
- Spring MVC框架在进行表单提交,自动封装成对象提交,在以对象的形式入参
最近做了一个超市订单管理系统的项目,使用的是Spring MVC 和Spring 框架. 如上图:进行新用户添加.此处jsp页面代码如下: <div class="right" ...
- Spring MVC 测试 | 模拟提交表单
在 Spring 4 MVC 单元测试例子 一文中利用Spring test 框架进行了简单的测试,代码mockMvc.perform(get("/SayHello/getAnswer&qu ...
- Layui 手动验证表单
使用的layui,种种原因想自定义执行表单验证方法,发现没有该功能,琢磨了会儿form.js找到了破解之法儿. 新增代码,基本上全是form原有的. form.js: /*** z:表单所在容器id* ...
- spring mvc ajax登录验证,vuejs (前端项目) + spring mvc(后台项目),每次ajax请求都是新的session Id...
问题解决了,解决方式如下: 1.参考ccfish的意见,安装了http-proxy-middleware插件,配置了如下内容: devServer: { host: '127.0.0.1', port ...
- [Spring MVC] - InitBinder验证
Spring MVC使用InitBinder验证: 使用InitBinder做验证的情况一般会在此Controller中提交的数据需要有一些是业务性质的,也即比较复杂的验证情况下才会使用.大部份简单的 ...
最新文章
- 如何下载DELL服务器VMware ESXi镜像
- Github阅览神器来啦!瞬间提升50%的阅览效率
- 睡眠好不在于8小时,关键是满足「睡眠周期」
- 四核处理器_(技术文档)你知道AMD Ryzen处理器中的CCX与CCD是什么吗?
- Mac版Anaconda安装Tweepy包
- python executemany执行延迟_运维架构师-Python 自动化运维开发-031
- Fragment学习笔记
- 最强自定义PHP集成环境,系统缺失dll和vc也能正常运行
- Kubernetes-2018干货盘点
- C# 添加PDF注释(5种类型)
- Sketch 51 新功能介绍(包含破解版下载)
- python数据拟合方法_Python-最小二乘法曲线拟合
- JESD204B调试4
- 女孩起名取名字:聪明美丽、好听委婉的女孩名字
- Cisco RV320未经身份验证的配置导出
- shell脚本中使用sudo的前置条件
- python布尔类型(bool)
- target is not existed: .page-component__scroll .el-scrollbar__wrap
- 为什么很多商家开始搭建自己的小程序商城?
- [CC2642r1][syscfg] 中文图形化界面,方便快速熟悉工具使用