精华内容
下载资源
问答
  • 数据验证
    2020-08-09 16:49:31

    vue动态数据校验

    动态相关数据验证列表 (Dynamic Dependent Data Validation Lists)

    Roger Govier has created a sample workbook and instructions that show you how to create dynamic dependent data validation lists. His technique lets you create multiple levels of dependent data validation, without defining a named range for each list.

    Roger Govier创建了一个示例工作簿和说明,向您展示了如何创建动态相关数据验证列表。 他的技术使您可以创建多个级别的相关数据验证,而无需为每个列表定义命名范围。

    Instead, Roger's formula uses the INDEX function, with MATCH, to find a column heading, then shows the list from that column.

    相反,Roger的公式使用带有MATCH的INDEX函数来查找列标题,然后显示该列的列表。

    For example, on one sheet you can list regions, countries, areas and cities.

    例如,在一张纸上,您可以列出地区,国家,地区和城市。

    RegionLists

    Then, on another sheet, select a region in column A, and see only the related countries in column B's data validation drop down.

    然后,在另一张纸上,在A列中选择一个区域,然后仅查看B列的数据验证中的相关国家/地区。

    In column C, you'd see only the areas in the selected column, then only the applicable cities in column D.

    在C列中,您只会在所选列中看到区域,然后在D列中仅看到适用的城市。

    RJG_DataValIndex

    这个怎么运作 (How It Works)

    With Roger's technique, you'll create four defined ranges, then use two of those ranges as the source for data validation drop down lists. The ranges are dynamic, so you can add more items to any list, or add new lists, and the defined ranges will automatically adjust.

    使用Roger的技术,您将创建四个定义的范围,然后将其中两个范围用作数据验证下拉列表的来源。 范围是动态的,因此您可以将更多项目添加到任何列表,或添加新列表,定义的范围将自动调整。

    There are full instructions for Data Validation – Dynamic Dependent Lists, and a sample workbook that you can download. Also, Roger Govier's contact information is at the bottom of that page.

    有关数据验证的完整说明–动态相关列表 ,您可以下载示例工作簿。 同样, Roger Govier的联系信息在该页面的底部。

    翻译自: https://contexturesblog.com/archives/2009/05/18/dynamic-dependent-data-validation-lists/

    vue动态数据校验

    更多相关内容
  • java 后端数据校验_后端数据验证

    千次阅读 2020-09-22 19:37:21
    java 后端数据校验It’s no secret that the list of 100 largest companies in the world by market value features many tech companies. In particular, it features software companies. 众所周知, 按市值列出...

    java 后端数据校验

    It’s no secret that the list of 100 largest companies in the world by market value features many tech companies. In particular, it features software companies.

    众所周知, 按市值列出的全球100家最大的公司中有许多高科技公司。 特别是它具有软件公司的特色。

    Apple, Microsoft, Amazon, Alphabet, Facebook, and Alibaba occupy six of the top seven positions, proving beyond any reasonable doubt that software rules the world. But if software is omnipresent today, so are software bugs.

    苹果,微软,亚马逊,Alphabet,Facebook和阿里巴巴占据了前七名中的第六名,这毫无疑问地证明了软件统治着世界。 但是,如果今天软件无所不在,那么软件错误也是如此。

    In this piece, we’ll discuss one of the most common mistakes that can lead to catastrophic results. We’ll see how such a mistake manifests in your code and a learn simple approach to avoid it.

    在本文中,我们将讨论可能导致灾难性结果的最常见错误之一。 我们将看到这种错误如何在您的代码中体现出来,并提供了一种避免这种错误的简单学习方法。

    永远不要信任您的用户 (Never Trust Your User)

    “Never trust your user” is one of those clichés you’ve probably heard if you’ve been writing software for more than a few months. In other words: Never trust any information submitted by a user. Whoever first said this was absolutely right!

    如果您编写软件已经有几个月以上了,那么“永远不要信任您的用户”就是您可能会听到的陈词滥调之一。 换句话说:永远不要信任用户提交的任何信息。 谁先说这是绝对正确的!

    What happens in the user’s browser when running the front end code you’ve developed is beyond your control. Essentially, the browser is a black box that, at some point, after the user has interacted with your code, might send you back a certain piece of data. How can you be unconditionally sure that this data has been generated as a result of the execution of your trusted code? Well, you can’t.

    运行您开发的前端代码时,用户浏览器中发生的事情是无法控制的。 本质上,浏览器是一个黑匣子,在用户与您的代码进行交互之后的某个时候,它可能会将您发送回某些数据。 您如何无条件地确定此数据是由于执行受信任代码而生成的? 好吧,你不能。

    Let’s take a look at an example. You’ll see first-hand why trusting user data is a bad idea.

    让我们看一个例子。 您将直接了解为什么信任用户数据是个坏主意。

    恶意数据提交 (A Malicious Data Submission)

    Let’s imagine a banking application that allows users to transfer funds from one account to another:

    让我们想象一个银行应用程序,它允许用户将资金从一个帐户转移到另一个帐户:

    Image for post
    An imaginary banking application (image by author)
    虚构的银行业务申请(作者提供的图片)

    When the user clicks on the Transfer button in the above scenario, your front end data validation code kicks in. It checks that there are enough funds in your account to allow you to proceed with the transfer and notifies you with an error message if not:

    在上述情况下,当用户单击“ Transfer按钮时,您的前端数据验证代码会启动。它将检查您帐户中是否有足够的资金可以进行转移,如果没有,则通过错误消息通知您:

    Image for post
    A sample frontend data validation scenario (image by author)
    前端数据验证场景示例(作者提供的图像)

    If you have a similar data validation scenario in your project, not backed by appropriate backend checks, there are many things that can go wrong here.

    如果您的项目中有类似的数据验证方案,并且没有适当的后端检查支持,那么这里可能有很多问题。

    禁用JavaScript (Disabling JavaScript)

    The user might simply disable JavaScript in the browser:

    用户可能只是在浏览器中禁用了JavaScript:

    Image for post
    Disabling JavaScript in Chrome (image by author)
    在Chrome中禁用JavaScript(作者提供的图片)

    In that case, the validation logic won’t run. Provided your application still works with JavaScript disabled, the transfer funds request will be submitted, executing a $150 transfer on an account with only $100 balance.

    在这种情况下,验证逻辑将不会运行。 如果您的应用程序仍可在禁用JavaScript的情况下运行,则将提交转帐资金请求,并在帐户余额为$ 100的情况下执行$ 150的转帐。

    修改来源 (Modifying sources)

    The source of the page and the underlying JavaScript code can be easily manipulated to do anything a malicious user might want:

    该页面的源代码和底层JavaScript代码可以轻松地进行操作,以执行恶意用户可能想要的任何事情:

    Image for post
    Manipulating the source of the page to display just anything — this is not Photoshopped (image by author)
    操纵页面的源以显示所有内容-这不是Photoshop处理(作者提供的图像)

    Similarly, the JavaScript code validating the balance and the amount to be transferred can be completely commented out or changed to allow all kinds of erroneous transfers.

    同样,验证余额和要转账金额JavaScript代码可以完全注释掉或更改,以允许各种错误的转账。

    请求捕获,修改和重放 (Request capturing, modifying, and replaying)

    Finally, the actual data submission request can be intercepted, captured, changed, and replayed. During the replay, a malicious user can change the body of the request to submit just any data they wish. If you’re interested in how to capture and replay REST requests, you can have a look at a previous piece of mine:

    最后,实际的数据提交请求可以被拦截,捕获,更改和重放。 在重播期间,恶意用户可以更改请求的主体以仅提交他们希望的任何数据。 如果您对如何捕获和重播REST请求感兴趣,可以看一下我的上一篇文章:

    So, how such a threat can be mitigated, or — even better— completely eliminated?

    那么,如何减轻或什至完全消除这种威胁呢?

    后端验证 (Backend Validations)

    Irrespective of front end technology and framework, your back end will eventually end up receiving a data request. It’s how you treat the content of that request that makes a difference.

    无论前端技术和框架如何,您的后端最终都会收到数据请求。 对待请求内容的方式与众不同。

    A quick recap: Never trust the data submitted by the user.

    快速回顾:永远不要信任用户提交的数据。

    Every bit of data submitted by your user has to be validated on your back end. Discard any information that you can obtain by querying your underlying data sources and keep only what is intrinsic to the actual request being handled. Here’s how you could validate the malicious request presented above:

    用户提交的每一位数据都必须在后端进行验证。 丢弃可以通过查询基础数据源获得的任何信息,并仅保留要处理的实际请求所固有的内容。 这是验证上面提出的恶意请求的方法:

    Image for post
    A backend validation flow (image by author)
    后端验证流程(作者提供的图片)

    The back end validation code not only checked, independently of the frontend, that the user has sufficient funds but also validated the real system ID of the user (using a security token/header passed along with the request) as well as the corresponding source account for that user. The transfer was eventually allowed only when all independently-checked conditions were satisfied.

    后端验证代码不仅独立于前端检查用户是否有足够的资金,而且还验证了用户的真实系统ID(使用与请求一起传递的安全令牌/标头)以及相应的源帐户对于该用户。 最终只有在所有独立检查的条件都满足时才允许转移。

    Of course, real banking software systems might need to perform more complex data validations than that shown above. However, basic validation checks such as these should always be part of your back end code.

    当然,实际的银行软件系统可能需要执行比上面显示的更为复杂的数据验证。 但是,诸如此类的基本验证检查应始终是后端代码的一部分。

    Implementing back end validation checks guarantees that any kind of malicious request has the chance to be re-checked in an environment you control. This is the only way to ensure that you, as the developer, have the final word on whether something should be executed or not.

    实施后端验证检查可确保任何种类的恶意请求都有机会在控制的环境中重新检查。 这是确保您(作为开发人员)对是否应该执行某些事情有最终决定权的唯一方法。

    结论 (Conclusion)

    If you’re a junior developer reading this piece, I hope you had the chance to learn something and next time you implement a data submission functionality you think of backend validations too. If you’re a mid/senior developer, you probably nod your head with a little sigh — you’ve seen these mistakes way too many times. Hopefully, you had the chance to catch them in a code review instead of prod!

    如果您是初级程序员,请阅读本文,希望您有机会学习一些知识,下次希望实现数据提交功能时,也请考虑一下后端验证。 如果您是中高级开发人员,则可能会稍感叹息-您已经多次看到这些错误。 希望您有机会在代码审查中找到他们,而不是产品!

    In conclusion, never trust your user and always perform back end data validation checks.

    总之,永远不要信任您的用户,并且始终执行后端数据验证检查。

    Thank you for reading this piece. I hope to see you on the next one.

    感谢您阅读本文。 我希望在下一个再见。

    翻译自: https://medium.com/better-programming/back-end-data-validations-73ea9004c6d7

    java 后端数据校验

    展开全文
  • excel数据校验原理 从Excel数据验证列表中选择多个项目 (Select Multiple Items from Excel Data Validation List) You've probably used an Excel data validation drop down list, where you can click the arrow,...

    excel导入数据校验

    You've probably used an Excel data validation drop down list, where you can click the arrow, and select an item to fill the cell. With a bit of programming, you can customize a drop down list, to select multiple items.

    您可能已经使用了Excel数据验证下拉列表 ,您可以在其中单击箭头,然后选择一个项目来填充单元格。 通过一些编程,您可以自定义下拉列表,以选择多个项目。

    单选下拉 (Single Selection Drop Down)

    By default, data validation drop downs only allow you to select one item.

    默认情况下,数据验证下拉列表仅允许您选择一项。

    In the worksheet shown below, you can select a month from the drop down, and it overwrites any previous selection in that cell.

    在下面显示的工作表中,您可以从下拉菜单中选择一个月,它会覆盖该单元格中以前的所有选择。

    Data Validation Drop Down

    从下拉列表中选择多个项目 (Select Multiple Items From the Drop Down List)

    Instead of limiting users to a single selection, you can use a bit of programming, combined with the data validation list, and allow multiple selections.

    您可以使用一些编程,再结合数据验证列表,而不是将用户限制为单个选择,并允许多个选择。

    You can display all the selected items across a row, or down a column, or keep them in the same cell. Keep reading, to see some examples of this technique, and how it works.

    您可以在一行或一列中显示所有选定的项目,或将它们保留在同一单元格中。 继续阅读,以查看该技术的一些示例以及其工作方式。

    There is also a video that shows the multiple selection drop down list. To try it for yourself, follow the download link for the sample file, near the end of this article.

    还有一个视频,显示多选下拉列表。 若要自己尝试,请遵循本文末尾的示例文件的下载链接。

    有关选择多个项目的更多文章 (More Articles on Select Multiple Items)

    [Update]: Since posting this article on selecting multiple items from an Excel drop down list, I've added more articles on this topic. Here are a few links to updates:

    [更新]:自从发布有关从Excel下拉列表中选择多个项目的文章以来,我已经添加了有关此主题的更多文章。 以下是一些更新链接:

    You can find the full list on the main page for this technique:

    您可以在主页上找到此技术的完整列表:

    多种选择选项 (Multiple Selection Options)

    In the sample file, there are different examples of the code, with options for where the selected items are placed. You might want all the items in a single cell, or in adjacent rows or columns.

    在示例文件中,有不同的代码示例,以及用于放置所选项目的选项。 您可能希望所有项目都在单个单元格中,或者在相邻的行或列中。

    跨行填充 (Fill Across a Row)

    For example, each item selected in this drop down list fills the next empty cell at the right. You could use this technique to fill player names across a list of innings, or employee names for days of the week.

    例如,在此下拉列表中选择的每个项目将填充右侧的下一个空白单元格。 您可以使用此技术在局列表中填充玩家名称,或在一周中的某天填充员工名称。

    Data Validation Fill Across

    填写一栏 (Fill Down a Column)

    In some worksheets, you might prefer to fill down, instead of across.

    在某些工作表中,您可能更愿意填写而不是全部填写。

    Data Validation Fill Down

    将值添加到同一单元格 (Add Values To the Same Cell)

    Instead of filling other cells, you can keep all the selections in the same cell, separated by commas.

    不必填充其他单元格,而是可以将所有选择保留在同一单元格中,并用逗号分隔。

    Data Validation Fill Same Cell

    使用编程来添加多个值 (Use Programming to Add Multiple Values)

    The code to allow multiple selections runs automatically when you make a change on the worksheet. To see the code for the SameCell sheet, in the sample file, you can right-click the sheet tab, and click on View Code.

    当您在工作表上进行更改时,允许多项选择的代码将自动运行。 要查看SameCell工作表的代码,请在示例文件中右键单击工作表选项卡,然后单击“查看代码”。

    Sheet Tab View Code

    In the code shown below, column 3 is the only one where the change will occur. In your workbook, you could change the 3 to a different number.

    在下面显示的代码中,第3列是唯一会发生更改的地方。 在工作簿中,您可以将3更改为其他数字。

    Or, if you don't want to limit the code to a specific column, you could delete the two rows that are marked with a red circle.

    或者,如果您不想将代码限制为特定的列,则可以删除标有红色圆圈的两行。

    Data Validation Multiple=

    下载样本数据验证文件 (Download the Sample Data Validation File)

    To experiment with this technique, you can download the zipped sample file from the Contextures website, on the Excel Data Validation - Select Multiple Items page.

    若要试验此技术,可以从Contextures网站的“ Excel数据验证-选择多个项目”页上下载压缩的示例文件。

    NOTE: In some of the code, you might have to change the range names or the sheet names, if you copy the code to a different workbook. Some code examples refer to a specific row or column number, and you might also need to adjust those.

    注意:在某些代码中,如果您将代码复制到其他工作簿中,则可能必须更改范围名称或工作表名称。 一些代码示例引用了特定的行号或列号,您可能还需要对其进行调整。

    In the sample file, a macro runs automatically when the workbook opens, to protect the "SameCell" worksheet. If you do not need that code, you can remove it from the ThisWorkbook module.

    在示例文件中,当工作簿打开时,宏会自动运行,以保护“ SameCell”工作表。 如果不需要该代码,可以将其从ThisWorkbook模块中删除。

    If you remove or rename the SameCell sheet, without deleting the Workbook_Open code, you will see an error message when the file opens.

    如果删除或重命名SameCell工作表,而不删除Workbook_Open代码,则在打开文件时会看到错误消息。

    购买高级版 (Buy the Premium Version)

    There is a premium version of this technique, and you can see the details here: Data Validation Multi Select Premium. Instead of selecting from the drop down, a list box appears when you click the cell. It automatically selects any items that are already in the cell. It also has buttons to Clear all the selections, and select all the items.

    该技术有一个高级版本,您可以在此处查看详细信息: 数据验证多选高级 。 单击该单元格时,会出现一个列表框,而不是从下拉列表中进行选择。 它会自动选择单元格中已经存在的所有项目。 它还具有清除所有选择并选择所有项目的按钮。

    The premium version works with dependent lists too, and runs on a protected worksheet. There is also an option of showing a multi-select listbox, or a single-select version (this is helpful when working with dependent lists -- you don't want multiple items selected in the main columns).

    高级版本也可用于从属列表,并在受保护的工作表上运行。 还有一个显示多选列表框或单选版本的选项(这在处理从属列表时很有用-您不希望在主列中选择多个项目)。

    The kit has 3 sample files, and a user guide, with details and screen shots, on how to add this technique to your own workbooks. Click here for details: Data Validation Multi Select Premium.

    该工具包包含3个示例文件和一个用户指南,其中包含有关如何将此技术添加到您自己的工作簿中的详细信息和屏幕截图。 单击此处了解详细信息: 数据验证多选Premium

    观看数据验证视频 (Watch the Data Validation Video)

    To see these techniques, and a few other multiple selection examples, you can watch this short video.

    要查看这些技术以及其他一些选择示例,您可以观看此简短视频。

    演示地址

    翻译自: https://contexturesblog.com/archives/2009/09/18/select-multiple-items-from-excel-data-validation-list/

    excel导入数据校验

    展开全文
  • 本篇主要介绍了springboot中的数据校验,包括Hibernate Validator,JavaBean参数校验,URL参数校验,JavaBean对象级联校验,分组校验和声明自定义校验注解,文中样例都是正确的样例,无需担心跑不通的情况,在阅读后...

    2. 数据校验

    对于应用系统而言,任何客户端传入的数据都不是绝对安全有效的,这就要求我们在服务端接收到数据时也对数据的有效性进行验证,以确保传入的数据安全正确。数据校验是Web开发中的重要部分,也是必须考虑和面对的事情。应用系统必须通过某种手段来确保输入的数据从语义上来讲是正确的。

    目前数据校验的规范、组件非常多,有JSR-303/JSR-349、HibernateValidator、Spring Validation。

    1. Hibernate Validator

    JSR(Java Specification Request)规范是Java EE 6中的一项子规范,也叫作Bean Validation。它指定了一整套基于bean的验证API,通过标注给对象属性添加约束条件。Hibernate Validator是对JSR规范的实现,并增加了一些其他校验注解,如@Email、@Length、@Range等。Spring Validation是Spring为了给开发者提供便捷,对Hibernate Validator进行了二次封装。同时,Spring Validation在SpringMVC模块中添加了自动校验,并将校验信息封装进了特定的类中。

    所以,JSR定义了数据验证规范,而Hibernate Validator则是基于JSR规范,实现了各种数据验证的注解以及一些附加的约束注解。Spring Validation则是对Hibernate Validator的封装整合。
    在这里插入图片描述

    包含了Hibernate Validator实现的JSR-303定义的验证注解和HibernateValidator自己定义的验证注解,同时也支持自定义约束注解。所有的注解都包含code和message这两个属性。

    • Message定义数据校验不通过时的错误提示信息。
    • code定义错误的类型。

    使用Hibernate Validator校验数据需要定义一个接收的数据模型,使用注解的形式描述字段校验的规则。

    2. JavaBean参数校验

    Post请求参数较多时,可以在对应的数据模型(Java Bean)中进行数据校验,通过注解来指定字段校验的规则。

    首先引入Validator依赖

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.20.Final</version>
    </dependency>
    

    我们创建一个JavaBean 实体类

    public class User {
        @NotBlank(message = "姓名不允许为空")
        @Length(min = 2,max = 10,message = "姓名长度错误,长度长度2-10!")
        private String name;
    
        @NotNull(message = "年龄不能为空")
        @Min(18,message = "年齡最小不能小于18")
        private int age;
    
        @NotBlank(message = "地址不能为空")
        private String address;
    
        @Pattern(regexp = "^1(3[0-9]|5[012356789]|7[1235678]|8[0-9])\\d{8}$", message ="手机号格式错误")
        private String phone;
    
        @Email(message = "邮箱格式错误")
        private String email;
    
       //省略get、set方法
    }
    

    在实体类中每个注解的属性message是数据校验不通过时要给出的提示信息。

    在controller层进行校验。

    @PostMapping(path = "/check")
    public String check(@RequestBody @Valid User user, BindingResult result) {
        String name = user.getName();
        if (result.hasErrors()) {
            List<ObjectError> list = result.getAllErrors();
            for (ObjectError error : list) {
                System.out.println(error.getCode() + "_" + error.getDefaultMessage());
            }
        }
        return name;
    }
    

    我们在@RequestBody后面加上@Valid注解标识需要进行校验。

    用postman进行测试,测试结果如下。

    在这里插入图片描述

    在这里插入图片描述

    3. URL参数校验

    一般GET请求都是在URL中传入参数。对于这种情况,可以直接通过注解来指定参数的校验规则。

    @RequestMapping("/test")
    public String query(@Length(min = 2, max = 10, message = "姓名长度错误,姓名长度2-10!") String name
            , @Min(value = 1, message = "年龄最小只能1")
                        @Max(value = 99, message = "年龄最大只能99")
                        @RequestParam(name = "age", required = true) int age) {
        System.out.println(name + "," + age);
        return name + "," + age;
    }
    

    在这里插入图片描述

    我们发现捕捉到了错误。

    在上面的示例中,使用@Min、@Max等注解对URL中传入的参数进行校验。需要注意的是,使用@Valid注解是无效的,需要在方法所在的控制器上添加@Validated注解来使得验证生效。

    @RestController
    @Validated
    public class TestController {}
    

    4. JavaBean 对象级联校验

    对于JavaBean对象中的普通属性字段,我们可以直接使用注解进行数据校验。在属性上添加@Valid注解就可以作为属性对象的内部属性进行验证(验证User对象,可以验证UserDetail的字段)。

    public class User {
        @NotBlank(message = "姓名不允许为空")
        @Length(min = 2, max = 10, message = "姓名长度错误,长度长度2-10!")
        private String name;
    
        @NotNull(message = "年龄不能为空")
        @Min(value = 18,message = "年齡最小不能小于18")
    //    @CustomAgeValidator
        private int age;
    
        @NotBlank(message = "地址不能为空")
        private String address;
    
        @Pattern(regexp = "^1(3[0-9]|5[012356789]|7[1235678]|8[0-9])\\d{8}$", message = "手机号格式错误")
        private String phone;
    
        @Email(message = "邮箱格式错误")
        private String email;
    
        @NotNull
        @Valid
        private UserDetail userDetail;
         //省略get、set方法
    }
    
    public class UserDetail {
    
    
        @Length(min = 5,max = 17,message = "length长度在[5,17]之间")
        @NotNull(message = "额外的不能为空")
        private String extField;
       //省略get、set方法
    }
    

    在属性上添加@Valid就可以对User中的关联对象UserDetail的字段进行数据校验。

    测试结果如下

    在这里插入图片描述

    在这里插入图片描述

    5.分组校验

    在不同情况下,可能对JavaBean对象的数据校验规则有所不同,有时需要根据数据状态对JavaBean中的某些属性字段进行单独验证。这时就可以使用分组校验功能,即根据状态启用一组约束。Hibernate Validator的注解提供了groups参数,用于指定分组,如果没有指定groups参数,则默认属于javax.validation.groups.Default分组。

    首先我们创建GroupA和GroupB接口

    public interface GroupA {
    }
    
    public interface GroupB {
    }
    

    然后我们创建实体类Person,并在相关的字段中定义校验分组规则。

    public class Person {
        private Integer userId;
        private String name;
    
        @Max(value = 40,message = "最大為40",groups = {GroupB.class})
        @Min(value = 30,message = "最小為30",groups = {GroupB.class})
        @Min(value = 20,message = "最小為20",groups = {GroupA.class})
        @Max(value = 30,message = "最大為30",groups = {GroupA.class})
        private Integer age;
    
    //省略get和set方法
    }
    

    在上面我们对age进行了分组校验,GroupA的规则为20 ~ 30,GroupB的规则为30 ~ 40。

    最后使用分组校验。

    @RequestMapping("/save3")
    public String save(@RequestBody @Validated({GroupA.class, Default.class})Person person,BindingResult result){
        System.out.println(JSON.toJSONString(result.getAllErrors()));
        return "success";
    }
    

    在这里插入图片描述

    [{"arguments":[{"code":"age","codes":["person.age","age"],"defaultMessage":"age"},20],"bindingFailure":false,"code":"Min","codes":["Min.person.age","Min.age","Min.java.lang.Integer","Min"],"defaultMessage":"最小為20","field":"age","objectName":"person","rejectedValue":2}]
    

    在报错信息中我们发现结果最小为20,但是我们传过来的值只有2。

    6. 声明自定义校验注解

    首先,我们定义新的校验注解@CustomAgeValidator

    @Min(value = 18, message = "年龄最小不能小于18")
    @Max(value = 120, message = "年龄最大不能超过120")
    @Constraint(validatedBy = {})//不指定校验器
    @Documented
    @Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface CustomAgeValidator {
        String message() default "年龄大小必须大于18并且小于120";
    
        Class<?>[] groups() default {};
    
        Class<? extends Payload>[] payload() default {};
    }
    

    在创建完自定义注解后,我们在User类的age属性上使用自定义组合注解。

    public class User {
        @NotBlank(message = "姓名不允许为空")
        @Length(min = 2, max = 10, message = "姓名长度错误,长度长度2-10!")
        private String name;
    
    //    @NotNull(message = "年龄不能为空")
    //    @Min(value = 18,message = "年齡最小不能小于18")
        @CustomAgeValidator
        private int age;
    
        @NotBlank(message = "地址不能为空")
        private String address;
    
        @Pattern(regexp = "^1(3[0-9]|5[012356789]|7[1235678]|8[0-9])\\d{8}$", message = "手机号格式错误")
        private String phone;
    
        @Email(message = "邮箱格式错误")
        private String email;
        //省略get和set注解
    
    }
    

    在上面user类中,我们在age上添加了@CustomAgeValidator自定义注解,这样age字段就会使用我们自定义的校验规则。

    在这里插入图片描述

    展开全文
  • springmvc数据验证jar包

    2019-05-01 17:33:17
    hibernate-validator, jboss-logging validation-api等包
  • 数据校验

    2020-12-30 11:56:33
    如果数据库校验失败,数据是不会保存到数据库中的,而是将校验结果返回到dao,dao将校验结果返回给service,service将校验结果返回给controller,controller将校验结果返回给界面,界面提示用户校验失败。...
  • 验证 Validation:向数据添加验证规则 显示 Display:指定数据如何呈现给用户 模型 Modelling:添加关于用法和与其它类的关系信息 下面是一个用来验证和展现用户信息的一个 Model: class Kid { [Range(0, 18)]...
  • 3、然后在这个类中写变量,这个变量的就是input标签中的name,也就是前端往后端传递的k值,我们就可以对这个k值对应的v值做数据内容的校验,比如是邮箱模式,比如是否允许空,最大字段长度,最小字段长度 ...
  • 主要介绍了PHP代码实现表单数据验证类,需要的朋友可以参考下
  • springMVC数据校验

    千次阅读 2022-05-17 15:26:47
    一般情况下,用户的输入是随意的,为了保证数据的合法性,数据验证是所有 Web 应用必须处理的问题。 Spring MVC 有以下两种方法可以验证输入: 利用 Spring 自带的验证框架 利用 JSR 303 实现 数据验证分为客户端...
  • 这是校验数据的一种方式,即校验和方式,可实现数据发送的完整性验证
  • 主要介绍了Spring Boot 数据校验@Valid+统一异常处理的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • SpringBoot数据校验

    千次阅读 2022-04-04 21:09:20
    SpringBoot中的 数据检验
  • 数据仓库实践杂谈(六)-数据校验

    千次阅读 2019-12-12 16:32:11
    数据源卸载出来的数据,进入仓库之前的第一个步骤就需要进行数据校验数据校验的前提是在元数据中建立一套合适的数据标准。而其中,最重要的是确定每个字段的取值范围。基于这个数据标准,同步建立一套程序用于...
  • Excel中7种自定义数据验证设置

    千次阅读 2022-03-20 14:24:47
    在Excel中,利用数据验证可以对数据的录入添加一定的限制条件。比如我们可以通过数据验证的基本设置使单元格只能录入整数、小数、时间、日期等,也可以创建下拉菜单选项。数据验证的基本功能在前面的文章已进行介绍...
  • 数据校验Java

    2021-04-21 18:54:26
    数据安全性校验数据校验是为保证数据的完整性进行的一种验证操作。通常用一种指定的算法对原始数据计算出的一个校验值,接收方用同样的算法计算一次校验值,如果两次计算得到的检验值相同,则说明数据是完整的。...
  • 主要介绍了javascript常见数据验证插件大全,需要的朋友可以参考下
  • pandas数据校验 import pandas as pd # 用assert校验 def ScoreValidation(row): try: assert 0 <= row.Score <= 100 except: print(f"#{row.ID}\tstudent {row.Name} has an invalid sco
  • 前端数据校验

    千次阅读 2021-06-04 18:15:38
    数据校验效果图代码注意事项 当前端做一些表单时,通常涉及到一些数据校验,比如字符长度,是否非空,两次输入数据是否一致。 这些功能完全可以通过脚本实现。 效果图 废话不多说,直接上代码。 代码 <!...
  • 这个C#类包含了各种常用数据验证的函数,包含验证是否是数字,校验email格式,区分中英文截取字符串,区分中英文计算字符串长度,检测是否包含中文字符,判断是否包含特定字符等 using System; using System.Text; ...
  • mysql主从数据校验步骤

    千次阅读 2022-01-28 15:12:31
    pt-table-checksum是一个在线验证主从数据一致性的工具,主要用于以下场景: 1.数据迁移前后,进行数据一致性检查 2.当主从复制出现问题,待修复完成后,对主从数据进行一致性检查 3.把从库当成主库,进行数据更新,产生了...
  • 本篇文章主要介绍了详解springmvc使用JSR-303进行数据校验,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
  • 数据校验官方文档

    2019-03-13 23:23:29
    java 校验官方文档,方便同学们下载吧,怕你们找不到,这颗是最新的呀
  • C#基础数据验证

    2018-01-15 10:44:21
    关于C#数据的基础数据验证笔记,技多不压身.祝大家好好学习,共同进步。
  • vue表单的数据验证

    2022-03-24 20:41:08
    vue表单的数据验证
  • ETL数据校验测试点

    2020-03-18 14:06:22
    更新耗时是否过长(可通过插入批量数据校验),时间过长可能会有风险比如数据中断未能全部同步,而且用户体验较差比如用户需要第二天上班前看到数据,达不到用户需求; 更新出现异常时,是否有做异常处理,...
  • GoFrame中gvalid模块实现了非常强大的数据校验功能,内置了40种常用的校验规则,支持单数据多规则校验、多数据多规则批量校验、自定义错误信息、自定义正则校验、自定义校验规则注册、支持struct tag规则及提示信息...
  • @Validated数据校验

    2022-03-07 14:59:31
    为了减少代码进行对数据进行校验,利用@Validated来进行注解形式的数据校验
  • Springboot整合EasyExcel实现数据校验

    千次阅读 2021-12-04 09:33:07
    文档会比较详细平且有多种使用方法这里不做介绍了,之前在其他地方看到导入时做字段校验的方法这里做个记录 先写好自定义注解需要几个写几个 @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) ...
  • 四、数据校验与去重

    2021-11-02 21:41:49
    为何需要数据校验 在上一篇博客中,我们加入了元数据服务作为存储对象的全局唯一标识,并在测试时留下了一个伏笔,查看 hello 文件的版本时可以看到这两个版本的 size 一致,都是 14 。其实是上传了同一个 hello ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,441,968
精华内容 976,787
关键字:

数据验证

友情链接: Job-1.zip