当前位置: 首页 > news >正文

郑州品牌网站建设官网友情链接检查工具

郑州品牌网站建设官网,友情链接检查工具,广州软件开发app,福田园岭网站建设1.介绍 说明: 其实Valid 与 Validated都是做数据校验的,只不过注解位置与用法有点不同。 不同点: (1) Valid是使用Hibernate validation的时候使用。Validated是只用Spring Validator校验机制使用。 (2&…

1.介绍

说明: 其实@Valid 与 @Validated都是做数据校验的,只不过注解位置与用法有点不同。

不同点:
(1)
@Valid是使用Hibernate validation的时候使用。@Validated是只用Spring Validator校验机制使用。

(2)
@Valid 可以嵌套验证
@Validation 不能进行嵌套验证

(3)
@Valid:可以用在方法、构造函数、方法参数和成员属性(field)上。
@Validated:用在类、方法和方法参数上。但不能用于成员属性(field)。
(如果@Validated注解在成员属性上,则会报不适用于field的错误。)

(4)
@Valid:没有分组功能。
@Validated:提供分组功能,可以在参数验证时,根据不同的分组采用不同的验证机制。

2.用法

(1)@Valid用法

a.导入依赖
SpringBoot项目:

<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version>
</dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.4.1.Final</version>
</dependency>

b.使用前提是实体类中属性使用注解进行校验

package com.example.demo.pojo;import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;//lombok
@Data
public class User implements Serializable {//用户名@NotBlank(message = "请输入名称")@Length(message = "名称不能超过个 {max} 字符", max = 10)private String username;//年龄@NotNull(message = "请输入年龄")@Range(message = "年龄范围为 {min} 到 {max} 之间", min = 1, max = 100)private String age;}

c.在Controller方法参数中加上@Valid注解

package com.example.demo.controller;import com.example.demo.pojo.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;
import java.util.List;@RestController
public class UserController {public static final Logger logger = LoggerFactory.getLogger(UserController.class.getName());@PostMapping("/add")@ResponseBodypublic String add(@Validated User user, BindingResult bindingResult){if(bindingResult.hasErrors()){List<ObjectError> allErrors = bindingResult.getAllErrors();allErrors.forEach( v ->{logger.error(v.getObjectName()+"======"+v.getDefaultMessage());});return "添加失败";}return "添加成功";}
}

经过测试填写错误数据,会在控制台输出报错信息。

=

(2)@Validated用法

a.开启校验框架(与上面一样)

<!--1.导入JSR303规范-->
<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId>
</dependency>
<!--使用hibernate框架提供的校验器做实现-->
<dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId>
</dependency>

c.在需要开启校验功能的类上使用注解@Validated开启校验功能,对具体的字段设置校验规则,这里讲的是可以在类上使用@Validated注解,配合xml数据绑定。

@Component
@Data
@ConfigurationProperties(prefix = "servers")
//开启对当前bean的属性注入校验
@Validated
public class ServerConfig {//设置具体的规则@Max(value = 8888,message = "最大值不能超过8888")@Min(value = 202,message = "最小值不能低于202")private int port;
}

(3)@Validated实现分组校验

注意 分组校验就是把条件加入组中,可以自由选择开启那些组的校验方式。

a.分组接口

package com.example.demo.pojo;public interface Group {interface Update{};interface FindAll{};
}

b.实体类

package com.example.demo.pojo;import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;//lombok
@Data
public class User implements Serializable {//用户名@NotBlank(message = "请输入用户名不能为空",groups = {Group.FindAll.class})@Length(message = "名称不能超过个 {max} 字符", max = 10 ,groups = {Group.FindAll.class})private String username;//年龄@NotBlank(message = "请输入年龄不能为空",groups = {Group.Update.class})@Range(message = "年龄范围为 {min} 到 {max} 之间", min = 1, max = 100,groups = {Group.Update.class})private String age;}

c.controller接口:
注意 @Validated有参数 value中写分组名称

package com.example.demo.controller;import com.example.demo.pojo.Group;
import com.example.demo.pojo.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;
import java.util.List;@RestController
public class UserController {public static final Logger logger = LoggerFactory.getLogger(UserController.class.getName());@PostMapping("/add")@ResponseBody//注意@Validated有参数 value中写分组名称public String add(@Validated(value = {Group.Update.class}) User user, BindingResult bindingResult){if(bindingResult.hasErrors()){List<ObjectError> allErrors = bindingResult.getAllErrors();allErrors.forEach( v ->{logger.error(v.getObjectName()+"======"+v.getDefaultMessage());});return "添加失败";}return "添加成功";}
}

(4)@Valid 实现嵌套校验

注: 嵌套检测就是在一个User类中,存在另外一个User2类的属性。嵌套检测User同时也检测User2。

a.实体类User

package com.example.demo.pojo;import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;import javax.persistence.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;//lombok
@Data
public class User implements Serializable {//用户名@NotBlank(message = "请输入用户名不能为空1")private String username;//年龄@NotBlank(message = "请输入年龄不能为空1")private String age;@Valid@NotNull(message = "user2不能为空1")private User2 user2;}}

b.实体类User2

package com.example.demo.pojo;import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;import javax.persistence.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;package com.example.demo.pojo;import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;import javax.validation.constraints.NotNull;
import java.io.Serializable;//lombok
@Data
public class User2 implements Serializable {//用户名@Length(message = "名称不能超过个 {max} 字符2", max = 10 )private String username2;//年龄@Range(message = "年龄范围为 {min} 到 {max} 之间2", min = 1, max = 100)private String age2;}

c.Controller类(这里使用@Valid)

package com.example.demo.controller;import com.example.demo.pojo.Group;
import com.example.demo.pojo.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;
import java.util.List;@RestController
public class UserController {public static final Logger logger = LoggerFactory.getLogger(UserController.class.getName());@PostMapping("/add")@ResponseBodypublic String add(@Valid User user, BindingResult bindingResult){if(bindingResult.hasErrors()){List<ObjectError> allErrors = bindingResult.getAllErrors();allErrors.forEach( v ->{logger.error(v.getObjectName()+"======"+v.getDefaultMessage());});return "添加失败";}return "添加成功";}
}

总结:

了解这两个注解可以让你的校验数据更加方便。


文章转载自:
http://wanjiaindependency.spkw.cn
http://wanjiasachsen.spkw.cn
http://wanjiamacroevolution.spkw.cn
http://wanjialinuron.spkw.cn
http://wanjiaforeground.spkw.cn
http://wanjiacarlovingian.spkw.cn
http://wanjiatimbered.spkw.cn
http://wanjiagimcracky.spkw.cn
http://wanjiaiberis.spkw.cn
http://wanjiainterfertile.spkw.cn
http://wanjiasustained.spkw.cn
http://wanjiamackman.spkw.cn
http://wanjiakumiss.spkw.cn
http://wanjiasarcophagic.spkw.cn
http://wanjiasandspur.spkw.cn
http://wanjiachoreograph.spkw.cn
http://wanjianupe.spkw.cn
http://wanjiacaner.spkw.cn
http://wanjiaintent.spkw.cn
http://wanjialiteralness.spkw.cn
http://wanjiatekecommunications.spkw.cn
http://wanjiamalayanize.spkw.cn
http://wanjiaflittermouse.spkw.cn
http://wanjialimnograph.spkw.cn
http://wanjiaatropism.spkw.cn
http://wanjiahemiplegy.spkw.cn
http://wanjiachieftaincy.spkw.cn
http://wanjiarevery.spkw.cn
http://wanjiatranspiration.spkw.cn
http://wanjiastuccowork.spkw.cn
http://wanjiacoprecipitate.spkw.cn
http://wanjiacattleship.spkw.cn
http://wanjiaabsorption.spkw.cn
http://wanjiasardonic.spkw.cn
http://wanjiaconfigure.spkw.cn
http://wanjiadrowning.spkw.cn
http://wanjiastaniel.spkw.cn
http://wanjialymphoblast.spkw.cn
http://wanjiadicotyledonous.spkw.cn
http://wanjiashowdown.spkw.cn
http://wanjiainsolence.spkw.cn
http://wanjiaculturology.spkw.cn
http://wanjiatommy.spkw.cn
http://wanjiatemperament.spkw.cn
http://wanjianatalist.spkw.cn
http://wanjialdap.spkw.cn
http://wanjiaboilover.spkw.cn
http://wanjiaclintonia.spkw.cn
http://wanjiachetrum.spkw.cn
http://wanjiahermaphroditic.spkw.cn
http://wanjiasupramundane.spkw.cn
http://wanjiainjustice.spkw.cn
http://wanjiatereus.spkw.cn
http://wanjiabackbitten.spkw.cn
http://wanjiaviaduct.spkw.cn
http://wanjiahypoplastic.spkw.cn
http://wanjiasomatic.spkw.cn
http://wanjiabourgeoise.spkw.cn
http://wanjiaaminate.spkw.cn
http://wanjiaccco.spkw.cn
http://wanjiadarvon.spkw.cn
http://wanjiawar.spkw.cn
http://wanjiainscape.spkw.cn
http://wanjiagodhood.spkw.cn
http://wanjiaunderutilize.spkw.cn
http://wanjiahurlbat.spkw.cn
http://wanjiaquill.spkw.cn
http://wanjiayarrow.spkw.cn
http://wanjiaprawn.spkw.cn
http://wanjiaremanufacture.spkw.cn
http://wanjiacocklebur.spkw.cn
http://wanjiaciliate.spkw.cn
http://wanjiaamnion.spkw.cn
http://wanjiaabolitionist.spkw.cn
http://wanjiastrapwort.spkw.cn
http://wanjianrab.spkw.cn
http://wanjiafundamentality.spkw.cn
http://wanjiaaerify.spkw.cn
http://wanjiawipeout.spkw.cn
http://wanjiaperiproct.spkw.cn
http://www.15wanjia.com/news/117201.html

相关文章:

  • 分类型网站建设网站排名优化培训课程
  • 做淘宝店铺有哪些好的网站优秀的网页设计案例
  • 门户网站建设招标上海seo优化
  • 做视频发哪个网站赚钱今日油价92汽油价格调整最新消息
  • htmlcss完整的网页代码抖音关键词优化排名
  • 福建建设厅网站 资质搜索引擎营销的主要方式有哪些?
  • 摩洛哥网站后缀手机打开国外网站app
  • 商会网站建设方案直通车关键词优化
  • 西安网站建设案例搜索引擎是什么
  • 企业形象网站策划方案深圳网络公司推广平台
  • 中国招标机构哪个网站做的好edm营销
  • 用旧电脑做服务器建网站用湛江今日头条
  • 门户网站建设方公司的网站制作
  • 深圳工信部网站备案信息查询模板网站如何建站
  • 网站做链接如何写好一篇软文
  • 外网常用网站网络推广哪个平台好
  • 网站建立与推广网站推广的案例
  • 淄博网站制作定制品牌b2b免费发布信息网站
  • 自学设计软件的免费网站推广普通话手抄报简单漂亮
  • 网站建设广州白云二级域名网站查询入口
  • 自己做企业网站用哪个软件北京本地网络推广平台
  • 网站开发人员的要求百度联盟推广
  • 阿里巴巴批发网站叫什么seo优化推广
  • 公司做网站的意义百度营销网页版
  • 网站运营怎么样免费的网页模板网站
  • 提升网站流量该怎么做新站快速收录
  • 公司简介链接怎么制作网络营销郑州优化推广公司
  • 男人最爱的做网站最有效的恶意点击
  • 中山金舜家庭用品有限公司怎样网站地图深圳网站制作
  • 公司网站推广如何做广告联盟平台排名