{"id":21974164,"url":"https://github.com/javaobjects/day03_springmvc05_validation","last_synced_at":"2025-10-08T23:25:11.226Z","repository":{"id":105562175,"uuid":"215677474","full_name":"javaobjects/day03_springMVC05_validation","owner":"javaobjects","description":"springMVC校验","archived":false,"fork":false,"pushed_at":"2019-10-17T07:21:48.000Z","size":9662,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-22T23:27:48.771Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/javaobjects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-17T01:32:22.000Z","updated_at":"2019-10-17T07:21:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"fd2250af-9081-4103-abde-a5931b43cf47","html_url":"https://github.com/javaobjects/day03_springMVC05_validation","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/javaobjects/day03_springMVC05_validation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fday03_springMVC05_validation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fday03_springMVC05_validation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fday03_springMVC05_validation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fday03_springMVC05_validation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javaobjects","download_url":"https://codeload.github.com/javaobjects/day03_springMVC05_validation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fday03_springMVC05_validation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000734,"owners_count":26082862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T15:39:13.630Z","updated_at":"2025-10-08T23:25:11.209Z","avatar_url":"https://github.com/javaobjects.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# springMVC校验\n\n#### 1. 导入校验jar文件\n\n![](WebContent/Images/1.png)\n\n```\nhibernate-validator-4.3.0.Final.jar\njboss-logging-3.1.0.CR2.jar\nvalidation-api-1.0.0.GA.jar\n```\n#### 2. 在spring-mvc.xml中配置校验器\n\t\n![](WebContent/Images/2.png)\n\n```xml\n\u003c!-- 5.配置校验器 --\u003e\n\u003cbean id=\"validator\" class=\"org.springframework.validation.beanvalidation.LocalValidatorFactoryBean\"\u003e\n\t\u003c!-- 校验器提供者 --\u003e\n\t\u003cproperty name=\"providerClass\" value=\"org.hibernate.validator.HibernateValidator\"\u003e\u003c/property\u003e\n\t\n\t\u003c!-- 错误信息文件,如果不配置，默认读取src路径下的ValidationMessages.properties文件 --\u003e\n\t\u003cproperty name=\"validationMessageSource\" ref=\"messageSource\"\u003e\u003c/property\u003e\n\u003c/bean\u003e\n\n\u003c!-- 5.1 读取外部错误信息配置文件 --\u003e\n\u003cbean id=\"messageSource\" class=\"org.springframework.context.support.ReloadableResourceBundleMessageSource\"\u003e\n\t\t\u003c!-- 外部文件路径 --\u003e\n\t\t\u003cproperty name=\"basenames\"\u003e\n\t\t\t\u003clist\u003e\n\t\t\t\t\u003cvalue\u003eclasspath:CustomerValidationMessages\u003c/value\u003e\n\t\t\t\u003c/list\u003e\n\t\t\u003c/property\u003e\n\t\t\n\t\t\u003c!-- 指定文件编码格式 --\u003e\n\t\t\u003cproperty name=\"defaultEncoding\" value=\"utf-8\"\u003e\u003c/property\u003e\n\t\t\n\t\t\u003c!-- 设置缓存时间（秒为单位） :缓存1分钟--\u003e\n\t\t\u003cproperty name=\"cacheSeconds\" value=\"60\"\u003e\u003c/property\u003e\n\u003c/bean\u003e\n```\n\n#### 3. 在src路径下配置错误信息文件CustomerValidationMessages.properties\n\n![](WebContent/Images/3.png)\n\n```properties\nemp.empno = \\u96C7\\u5458\\u7F16\\u53F7\\u957F\\u5EA6\\u5FC5\\u987B\\u4E3A4\nemp.ename = \\u96C7\\u5458\\u540D\\u79F0\\u5FC5\\u987B\\u7531\\u4E0B\\u5212\\u7EBF\\u3001\\u6570\\u5B57\\u3001\\u5B57\\u6BCD\\u7EC4\\u6210\\uFF0C\\u957F\\u5EA6\\u5FC5\\u987B\\u57286-10\\u4F4D\\u4E4B\\u95F4\nemp.salary = \\u85AA\\u6C34\\u5FC5\\u987B\\u5927\\u4E8E1000\\uFF0C\\u5C0F\\u4E8E99999\n```\n\n#### 4. 在spring-mvc.xml中校验器注入到处理器适配器中\n\t\t\n```xml\n\u003c!-- 1.开启注解方式的处理器映射器、处理器适配器 --\u003e\n\u003cmvc:annotation-driven validator=\"validator\"/\u003e\n```\n\n#### 5. 在Emp.java添加校验规则\n\n![](WebContent/Images/4.png)\n\n```Java\npublic class Emp {\n\n\t/**雇员编号*/\n\t@Min(value=1000,message=\"{emp.empno}\")\n\t@Max(value=9999,message=\"{emp.empno}\")\n\tprivate int empno;\n\t\n\t/**雇员姓名*/\n\t@Pattern(regexp=\"[0-9a-zA-Z_]{6,10}\",message=\"{emp.ename}\")\n\tprivate String ename;\n\t\n\t/**职位*/\n\t@NotEmpty(message=\"{emp.job}\")\n\tprivate String job;\n\t\n\t/**上级经理*/\n\t@Min(value=1000,message=\"{emp.mgr}\")\n\t@Max(value=9999,message=\"{emp.mgr}\")\n\tprivate int mgr;\n\t\n\t/**入职日期*/\n\t@NotNull(message=\"{emp.hiredate}\")\n\tprivate Date hiredate;\n\t\n\t/**薪水*/\n\t@Min(value=1000,message=\"{emp.salary}\")\n\t@Max(value=99999,message=\"{emp.salary}\")\n\tprivate double salary;\n\t\n\t/**奖金*/\n\t@Min(value=1000,message=\"{emp.comm}\")\n\t@Max(value=99999,message=\"{emp.comm}\")\n\tprivate double comm;\n}\n```\n\n#### 6. 在EmpController.java中捕获错误信息\n\n![](WebContent/Images/5.png)\n\n```Java\n@RequestMapping(\"/insertEmp\")\npublic String insertEmp(Model model,@Valid Emp emp,BindingResult bindingResult)\n{\n\t//判断是否有错误结果\n\tif(bindingResult.hasErrors())\n\t{\n\t\t//获取错误结果\n\t\tList\u003cObjectError\u003e errorList = bindingResult.getAllErrors();\n\t\t/*for (ObjectError error : errorList) {\n\t\t\tSystem.err.println(error.getDefaultMessage());\n\t\t}*/\n\t\t\n\t\t//将错误结果保存在request作用域\n\t\tmodel.addAttribute(\"errorList\", errorList);\n\t\t\n\t\t//跳转回新增界面，并显示错误信息\n\t\treturn \"empInsert\";\n\t\t\n\t}\n\t\n\tSystem.out.println(\"新增用户的信息：\" + emp);\n\t\n\treturn \"success\";\n}\n```\t\n\n#### 7. 在empInsert.jsp中显示错误信息\n\n![](WebContent/Images/6.png)\n\n```Jsp\n\u003ch5\u003e\n\t\u003cc:forEach items=\"${errorList}\" var=\"error\"\u003e\n\t\t\u003cfont color=\"red\" size=\"-1\"\u003e${error.defaultMessage}\u003c/font\u003e\u003cbr/\u003e\n\t\u003c/c:forEach\u003e\n\u003c/h5\u003e\n```\n#### 7. 效果如下\n\n![](WebContent/Images/7.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavaobjects%2Fday03_springmvc05_validation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavaobjects%2Fday03_springmvc05_validation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavaobjects%2Fday03_springmvc05_validation/lists"}