Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to use @ Validated packet check in Spring

2025-02-24 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/03 Report--

This article mainly introduces "how to use @ Validated grouping check in Spring". In daily operation, I believe many people have doubts about how to use @ Validated grouping check in Spring. The editor consulted all kinds of data and sorted out simple and useful operation methods. I hope it will be helpful to answer the doubts about "how to use @ Validated grouping check in Spring". Next, please follow the editor to study!

Catalogue

The use of Spring @ Validated packet check

Introduce POM dependency

Define the Vo that receives the data

Unified exception handling class

Test class

Page effect test

Use @ Validated to group pits encountered

Solution.

The use of Spring @ Validated packet check

Through this article you can learn the basic use of @ Validated and how to handle data exceptions uniformly in spring-boot.

The Spring Validation verification framework provides @ Validated (Spring's JSR-303 specification, a variation of standard JSR-303) for parameter verification, and javax provides @ Valid (standard JSR-303 specification). With BindingResult, you can directly provide parameter verification results.

When verifying that the input parameter conforms to the specification, there is not much difference in basic validation functionality using @ Validated or @ Valid. However, the two functions are different in grouping, annotations, nested validation, and so on. Generally speaking, @ validated is equivalent to an upgraded version of @ Valid validation, which is more powerful.

Next, let's take a direct look at how to use

Introduce POM dependency org.hibernate hibernate-validator 5.2.4.Final

Define the public grouping class (for marking grouping, which can be defined in Vo as later, but it is recommended that some commonly used definitions be external), as follows

Public interface Add {} public interface Edit {}

Define the Vo that receives the data

Note the use of grouping in the annotations. For demonstration, a special grouping class is defined internally.

Import com.example.jsr.commmon.Add;import com.example.jsr.commmon.Edit;import org.hibernate.validator.constraints.NotBlank; import javax.validation.constraints.Pattern Public class ParamsVo {/ / specially used to modify age markers use flexible placement position public interface ModifyAge {} / / valid public static final String AGE_REG = "/ ^ (?: [1-9] [0-9]? | 1 [01] [0-9] | 120) $/" @ NotBlank (groups = {Edit.class, ParamsVo.ModifyAge.class}, message = "failed, id cannot be empty") private String id; @ NotBlank (groups = {Edit.class, Add.class}, message = "failed, name cannot be empty") private String name / / customize a regular @ NotBlank (groups = {Add.class, ParamsVo.ModifyAge.class}, message = "failed, please fill in age") @ Pattern (regexp = AGE_REG,groups = {Add.class, ParamsVo.ModifyAge.class}, message = "failed, please fill in the correct age") private String age;. Omit the setter getter method.} uniform exception handling class import org.springframework.validation.BindException;import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody / * * Global exception handling * / @ ControllerAdvicepublic class GlobalExceptionHandler {@ ExceptionHandler (BindException.class) @ ResponseBody public String handlerUnexpectedTypeException (BindException ex) {BindingResult result = ex.getBindingResult (); if (result.hasErrors ()) {FieldError fieldError = result.getFieldError (); if (fieldError! = null) {return fieldError.getDefaultMessage () }} return "failed, please refresh and try again";} @ ExceptionHandler (Exception.class) @ ResponseBody public String handlerException (Exception ex) {ex.printStackTrace (); return "failed, please refresh and try again";}} Test class import com.example.jsr.Vo.ParamsVo;import com.example.jsr.commmon.Add;import com.example.jsr.commmon.Edit;import org.springframework.stereotype.Controller Import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody; @ Controller@RequestMapping ("/ validated/test") public class ValidatedTestController {@ RequestMapping ("/ add") @ ResponseBody public String add (@ Validated (Add.class) ParamsVo paramsVo) {System.out.println (String.format ("add obj = {% s}", paramsVo.toString (); return "success" } @ RequestMapping ("/ edit") @ ResponseBody public String editAll (@ Validated ({Edit.class,ParamsVo.ModifyAge.class}) ParamsVo paramsVo) {System.out.println (String.format ("edit obj = {% s}", paramsVo.toString (); return "success";}} Page effect Test

Do not enter age

Fill in an error age

So far, I believe there is no problem with the basic use.

Use @ Validated to group pits encountered

When using @ Validate annotation grouping check, if you specify a grouping, all attributes that need to be validated must add the specified grouping to be validated

Solution.

It is not indicated that the attributes of the packet belong to Default, so the packet interface inherits Default can solve the problem.

At this point, the study on "how to use @ Validated packet check in Spring" is over. I hope to be able to solve your doubts. The collocation of theory and practice can better help you learn, go and try it! If you want to continue to learn more related knowledge, please continue to follow the website, the editor will continue to work hard to bring you more practical articles!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report