首页 > 其他分享 >跟着hsp学springmvc--数字格式化介绍

跟着hsp学springmvc--数字格式化介绍

时间:2023-05-25 19:55:04浏览次数:46  
标签:验证 springmvc 303 System -- hsp println 注解 out

基本数据类型和字符串类型的自动转换
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h3>添加妖怪~~</h3> <!-- 这里的表单,我们使用 springMVC 的标签来完成 特别说明几点: 1. SpringMVC 表单标签在显示之前必须在 request 中有一个 bean, 该 bean 的属性 和表单标签的字段要对应! request 中的 key 为: form 标签的 modelAttrite 属性值, 比如这里的 monsters 2. SpringMVC 的 form:form 标签的 action 属性值中的 / 不代表 WEB 应用的根目 录. --> <form:form action="save" method="POST" modelAttribute="monster"> 妖怪名字: <form:input path="name"/> <form:errors path="name"/> <br><br> 妖怪年龄~: <form:input path="age"/> <form:errors path="age"/> <br><br> 电子邮件: <form:input path="email"/> <form:errors path="email"/> <br><br> 生日: <form:input path="birthday"/> <form:errors path="birthday"/> <br><br> 薪水: <form:input path="salary"/> <form:errors path="salary"/> <br><br> <input type="submit" value="添加妖怪"/> </form:form> </body> </html>

比如通过表单提交数据给springmvc时,输入的”28“字符串就会自动地转成Integer类型的数据保存在Model中


对于特殊数据类型和字符串的转换要使用注解

比如日期(@DateTimeFormat),货币(@NumberFormat)等等。

注解中的pattern可以指定输入的数据格式,如果不满足格式则会报错。


验证以及国际化

1. 对输入的数据(比如表单数据),进行必要的验证,并给出相应的提示信息。 2. 对于验证表单数据,springMVC 提供了很多实用的注解, 这些注解由 JSR 303 验证框架提 供. ● JSR 303 验证框架 1. JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架,它已经包含在 JavaEE 中 2. JSR 303 通过在 Bean 属性上标注类似于 @NotNull、@Max 等标准的注解指定校验规则, 并通过标准的验证接口对 Bean 进行验证

Hibernate Validator 是 JSR 303 的一个参考实现,除支持所有标准的校验注解外,它还支 持以下的扩展注解: 

 

Controller使用这些注解的验证必须在参数列表前添加@Valid注解来标明,

@RequestMapping(value = "/save")
    public String save(@Valid Monster monster, Errors errors, Map<String,Object>map){
        System.out.println(monster);
        System.out.println("============");
        for (Map.Entry<String,Object> entry : map.entrySet()) {
            System.out.println(entry.getKey()+"   "+entry.getValue());
        }
        System.out.println("=============");
        if(errors.hasErrors()){
            List<ObjectError> allErrors = errors.getAllErrors();
            for (ObjectError allError : allErrors) {
                System.out.println(allError);
            }
            return "data_valid/monster_addUI";
        }

        return "data_valid/success";
    }

Error类用来存储前台输入的不符合规范的错误,并解释具体的错误信息,前台通过spring标签来回显具体的错误信息。

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>是引入spring的标签
通过<form:errors path="?"/>来指定回显的具体的属性的错误信息,可以通过自定义来实现回显的信息。

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>添加妖怪~~</h3>
<!-- 这里的表单,我们使用 springMVC 的标签来完成
特别说明几点:
1. SpringMVC 表单标签在显示之前必须在 request 中有一个 bean, 该 bean 的属性
和表单标签的字段要对应!
request 中的 key 为: form 标签的 modelAttrite 属性值, 比如这里的 monsters
2. SpringMVC 的 form:form 标签的 action 属性值中的 / 不代表 WEB 应用的根目
录. -->
<form:form action="save" method="POST" modelAttribute="monster">
    妖怪名字: <form:input path="name"/> <form:errors path="name"/> <br><br>
    妖怪年龄~: <form:input path="age"/> <form:errors path="age"/> <br><br>
    电子邮件: <form:input path="email"/> <form:errors path="email"/> <br><br>
    生日: <form:input path="birthday"/> <form:errors path="birthday"/> <br><br>
    薪水: <form:input path="salary"/> <form:errors path="salary"/> <br><br>
    <input type="submit" value="添加妖怪"/>
</form:form>
</body>
</html>

国际化错误信息需要配置具体的文件,还需要在springmvc的配置文件中进行配置。

 如果属性验证需要满足多种要求,可以把验证注解组合使用以达到效果,例如:

要求age属性字段不能为空且必须在1~100之间

    @NotNull(message = "年龄不能为空")
    @Range(min = 1,max = 100)
    private Integer age;
    @NotNull(message = "姓名不能为空")
    @NotEmpty
    private String name;
    @NotNull(message = "生日不能为空")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    @NotNull(message = "薪水不能为空")
    @NumberFormat(pattern = "###,###.##")
    private float salary;

数据类型转换校验核心类-DataBinder

 

 

标签:验证,springmvc,303,System,--,hsp,println,注解,out
From: https://www.cnblogs.com/gyhdeblog/p/17432702.html

相关文章

  • Pyzbar 安装失败
    安装pyzbar报错  其实就是缺少 MicrosoftVisualC++2013RedistributablePackage支持FileNotFoundError:Couldnotfindmodulelibzbar-64.dll百度MicrosoftVisualC++2013RedistributablePackage 下载  直接安装 解决问题......
  • 记录--超长溢出头部省略打点,坑这么大,技巧这么多?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在业务中,有这么一种场景,表格下的某一列ID值,文本超长了,正常而言会是这样: 通常,这种情况都需要超长省略溢出打点,那么,就会变成这样: 但是,这种展示有个缺点,3个ID看上去就完全一致了,因此,PM希望能够实现头部省略......
  • 【837】Hugging Face - Text classification
    参考:HuggingFace-Textclassification主要步骤:1.LoadIMDbdatasetStartbyloadingtheIMDbdatasetfromthe......
  • 实验6
    task4源码#include<stdio.h>#include<string.h>#defineN100typedefstruct{charnum[10];//学号ints1;//期末成绩ints2;//平时成绩doublesum;//总评charlevel[10];//等级}STU;......
  • 线上初赛1——小球识别
    线上初赛1——小球识别本文转载自python下用OpenCV的圆形检测-CosmosbipinnatusCav-博客园(cnblogs.com)一、简介​ 对于圆形物体识别问题,opencv提供了大量方法。二、检测步骤2.1读取图像调用imread函数即可。img=cv.imread('ball.png')cv.imshow('image',img)......
  • kafka
    broker一般指服务器资源概念理解topic:逻辑概念,用于联系Producer和Consumer的message生产和消费。Producer生产的消息放入一个topic中,由Consumer通过对同一个topic的订阅进行消费 broker:物理资源,一般一个broker指底层的一台物理服务器。 partition:逻辑分区存储,用于将......
  • 【题解】Codeforces Round 737 (CF1557)
    VP情况:solve:4/5rank:431st评价:VP了一下,我这个shaberB直接5发罚时,耽误了二十多分钟,以及被D各种细节差点搞死。A.EzzatandTwoSubsequences(*800)题目描述:给定一个序列,将其分为\(2\)个组,要求这两个组的平均值之和最大,组内的数不要求在原序列中连续。题目分析:我们......
  • 深度学习
    第一部分基础知识(T=3W)1.1数学(T=1W)高数:导数、微分、积分、梯度、泰勒展开式线性代数:向量、矩阵、运算、范数、特征向量和特征值概率论:条件概率、期望等1.2Python(T=1W)廖雪峰免费教程:(从第一讲看到常用的第三方模块,了解面向对象编程)Python实战:利用Python进行数据分析第......
  • 反向传播
    反向传播将输入值与参数用向量的形式表示,神经网络可以简化为:损失函数为:反向传播:损失函数的梯度即为损失函数对参数的偏导数,这一运用链式法则求导的过程,是从后往前反向进行的,所以称这个过程为反向传播。梯度为:......
  • java反射代码案例
    反射案例代码点击查看代码packagecom.bh.zoo;publicclassWolfextendsAnimal{publicStringname;publicStringcolor;protectedStringblood;privateintage;publicvoideat(){System.out.println("狼吃肉");}public......